STM32f103串口2程序
时间: 2023-12-31 12:07:09 浏览: 160
以下是一个使用STM32F103系列的串口2的示例程序:
```c
#include "stm32f10x.h"
void USART2_Init(void);
void USART2_SendChar(char c);
void USART2_SendString(char* s);
int main(void)
{
USART2_Init();
while (1)
{
// 发送字符串
USART2_SendString("Hello, World!\r\n");
// 延时
for (int i = 0; i < 1000000; i++);
}
}
void USART2_Init(void)
{
// 使能串口2的时钟
RCC->APB1ENR |= RCC_APB1ENR_USART2EN;
// 配置串口2引脚
GPIOA->CRL &= ~(GPIO_CRL_CNF2 | GPIO_CRL_MODE2);
GPIOA->CRL |= GPIO_CRL_CNF2_1 | GPIO_CRL_MODE2_0 | GPIO_CRL_MODE2_1;
// 配置波特率为115200
USART2->BRR = 0x1D4C;
// 使能接收和发送
USART2->CR1 |= USART_CR1_RE | USART_CR1_TE;
// 使能串口2
USART2->CR1 |= USART_CR1_UE;
}
void USART2_SendChar(char c)
{
// 等待发送缓冲区为空
while (!(USART2->SR & USART_SR_TXE));
// 发送字符
USART2->DR = c;
}
void USART2_SendString(char* s)
{
// 发送字符串
while (*s)
{
USART2_SendChar(*s);
s++;
}
}
```
这个程序初始化了串口2,并在一个无限循环中发送字符串"Hello, World!",并且每次发送完后进行了一段延时。你可以根据自己的需求修改程序中的内容。请注意,此代码假设你已经正确配置了系统时钟和GPIO引脚。
阅读全文