STM32F103C6T6怎么用串口2,写个示例代码
时间: 2023-08-16 08:07:40 浏览: 109
下面是一个使用STM32F103C6T6的串口2进行数据传输的简单示例代码:
```c
#include "stm32f10x.h"
void USART2_Init(void);
void USART2_SendChar(char c);
void USART2_SendString(const char* str);
int main(void) {
USART2_Init();
while (1) {
USART2_SendString("Hello, World!\r\n");
Delay(1000); // 延时1秒
}
}
void USART2_Init(void) {
// 使能GPIOA和USART2的时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_USART2EN;
// 配置PA2为复用推挽输出模式
GPIOA->CRL &= ~GPIO_CRL_MODE2; // 清零
GPIOA->CRL |= GPIO_CRL_MODE2_1; // 50MHz
GPIOA->CRL |= GPIO_CRL_CNF2_1; // 复用推挽输出
// 配置USART2
USART2->BRR = 0x1D4C; // 波特率为115200,根据时钟频率调整
USART2->CR1 = USART_CR1_TE; // 使能发送模式
USART2->CR1 |= USART_CR1_UE; // 使能USART2
// 清除发送寄存器的发送完成标志
USART2->SR &= ~USART_SR_TC;
}
void USART2_SendChar(char c) {
// 等待发送缓冲区为空
while (!(USART2->SR & USART_SR_TXE));
// 发送字符
USART2->DR = c;
}
void USART2_SendString(const char* str) {
// 逐个发送字符串中的字符,直到遇到结束符'\0'
while (*str) {
USART2_SendChar(*str++);
}
}
```
这个示例代码初始化了USART2,配置PA2引脚为复用推挽输出模式,并使用波特率115200进行数据发送。在`main()`函数中,通过调用`USART2_SendString()`函数发送字符串"Hello, World!",然后延时1秒。你可以根据需要修改和扩展这个示例代码来满足你的应用需求。请注意,以上代码仅供参考,实际使用时请根据MCU的手册和开发环境进行适当的修改和配置。
阅读全文