STM32F103C6T6怎么用串口2,写个示例代码使用库函数
时间: 2024-04-17 18:24:34 浏览: 89
STM32的UART串口1和串口2同时格式化输出输入(STM32神舟IV号-库函数版)程序,亲测能用
下面是一个使用库函数在STM32F103C6T6上配置和使用串口2的示例代码:
```c
#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.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) {
GPIO_InitTypeDef GPIO_InitStruct;
USART_InitTypeDef USART_InitStruct;
// 使能GPIOA和USART2的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
// 配置PA2为复用推挽输出模式
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
// 配置USART2
USART_InitStruct.USART_BaudRate = 115200;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Tx;
USART_Init(USART2, &USART_InitStruct);
USART_Cmd(USART2, ENABLE);
}
void USART2_SendChar(char c) {
// 发送一个字符
USART_SendData(USART2, c);
// 等待发送完成
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
void USART2_SendString(const char* str) {
// 逐个发送字符串中的字符,直到遇到结束符'\0'
while (*str) {
USART2_SendChar(*str++);
}
}
```
这个示例代码使用了STM32标准外设库函数来配置和使用USART2。在`main()`函数中,通过调用`USART2_SendString()`函数发送字符串"Hello, World!",然后延时1秒。你可以根据需要修改和扩展这个示例代码来满足你的应用需求。请注意,以上代码仅供参考,实际使用时请根据MCU的手册和开发环境进行适当的修改和配置。
阅读全文