用途:TX Rx发送、接收——1串口助手通信 2WiFi模块 3语音控制
参考文章:
库函数方式配置:(注意连接时是反接Tx和Rx)
GPIO配置
RCC管脚时钟AHB1—GPIOx—ENABLE
.模式复用 推挽输出 无上下拉...(F4)
GPIO复用配置(管脚组x,复用管脚号x(不能或|),复用功能选取)
USART复用配置
RCC管脚时钟APB2—USARTx—ENABLE
.波特率(由参数值确定bau)
.硬件流控制——disable
.串口模式——Tx|Rx(收发双功能开启)
.奇偶校验——无
.停止位——一个
.字长——8b
初始化(&结构体)
串口使能开关and串口中断使能2个
Nvic结构体.通道线号——USARTx_IRQn
.通道使能——ENABLE
.通道抢占优先级——(根据主函数的唯一配置分组)
.通道响应优先级——两个都是谁数字小谁优先
初始化(&结构体)
46行——根据库函数编写单字符串口发送函数(u8 data)
While(查看发送完成标志位==0(1发完跳出,发下一个)){;}
单字符发送函数(串口x,date);
53行——根据单字符编写字符串(u8 *str)
While(*str)
{单字符串口发送函数(*str++);}
看核心文件startup_stm32xxx_xxx.s 选择和编写 已确定的双void串口接收中断函数
规则:{1.清中断标志2.不破坏栈(特别是延时函数)}
判断接收中断——用中断状态函数查IT_RXNE(状态为1则正在接收)
Buff数组[长度量++]=串口接收函数(串口号);
判断空闲中断——用中断状态函数查IT_IDLE(状态为1则接收结束)
{接收标志位=1;——(外部声明用于主函数判断)
Buff数组[长度量]=0;(字符串结束符/0)
长度量=0;
串口接收函数(串口号);——(清标志)}
常用函数
USART_SendData(USARTx,Data);——串口发送函数
USART_ReceiveData(USARTx);——串口接收函数
USART_GetFlagStatus(USARTx, USART_FLAGx);——查看串口标志状态函数(TC发送检查,1发完)
USART_GetITStatus(USARTx, USART_ITx);——查看串口中断状态函数(RXNE为1则正在接收,
IDLE为1则接收结束)
Int fputs函数——stdio.h函数库
用途:输出重定向,用于在串口助手界面上打印出printf的字符—重定义-CSDN博客
(重定向:
重写库函数,对原函数进行覆盖,编译时优先调用重定向的用户函数——重定向fputc函数实现printf串口发送-CSDN博客)
参考学习,望有助