STM32 USART通信
//引脚初始化
GPIO_InitTypeDef GPIO_InitStruct;
//USART初始化
USART_InitTypeDef USART_InitStrict;
//因为要使用 USART和GPIOA引脚 开启该时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);
//PA9 TX 复用推挽
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//PA10RX 输入上拉
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//初始化引脚 设置usart 引脚的波特率 数据位 停止位 硬件流控制
USART_InitStrict.USART_BaudRate=baudrate;//外部输入初始化 波特率
USART_InitStrict.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//不使用硬件流控制
USART_InitStrict.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
USART_InitStrict.USART_Parity=USART_Parity_No;//不用校验 奇偶检验为 判断1是偶数还是奇数
USART_InitStrict.USART_StopBits=USART_StopBits_1;// 1位停止位 停止位1 1.5 2 0.5
USART_InitStrict.USART_WordLength=USART_WordLength_8b;// 8 数据长度 8位或者9位
USART_Init(USART1, &USART_InitStrict);//初始化
//使能
USART_Cmd(USART1,ENABLE);//引脚初始化
GPIO_InitTypeDef GPIO_InitStruct;
//USART初始化
USART_InitTypeDef USART_InitStrict;
//因为要使用 USART和GPIOA引脚 开启该时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE);
//PA9 TX 复用推挽
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//PA10RX 输入上拉
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//初始化引脚 设置usart 引脚的波特率 数据位 停止位 硬件流控制
USART_InitStrict.USART_BaudRate=baudrate;//外部输入初始化 波特率
USART_InitStrict.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//不使用硬件流控制
USART_InitStrict.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
USART_InitStrict.USART_Parity=USART_Parity_No;//不用校验 奇偶检验为 判断1是偶数还是奇数
USART_InitStrict.USART_StopBits=USART_StopBits_1;// 1位停止位 停止位1 1.5 2 0.5
USART_InitStrict.USART_WordLength=USART_WordLength_8b;// 8 数据长度 8位或者9位
USART_Init(USART1, &USART_InitStrict);//初始化
//使能
USART_Cmd(USART1,ENABLE);
然后继续使用标准库的函数继续串口是数据收发就可以实现通信了
// 发送
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
//接收数据
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
原文地址:https://blog.csdn.net/m0_58341340/article/details/144311173
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!