STM32学习——串口
来源:互联网 发布:凸包算法 时间复杂度 编辑:程序博客网 时间:2024/06/09 08:08
关于串口接收
1、实验发现发送端需发送‘\r\n’串口才能接收到,其实不然,我们使用的是中断模式来接收数据,每发一个字节数据都会触发一次中断,中断中使用库函数
Res =USART_ReceiveData(USART1)来接收一个字节数据,若发2个就触发两次。
2、通常会发送一连串数据,对于这一连串的数据,我们要知道什么时候收到数据的尾巴,所以采用“”\r\n“”来标记为这串数据结束,同时接收结束时点亮个标志位,在主函数可以一直查询这个标准,点亮就说明收到数据,同时还需要记录数据的长度,还要有收到\r的标志(用来在中断函数中判断下一次是否收到的是\n)
程序源码
u16 USART_RX_STA=0; //接收状态标记void USART1_IRQHandler(void) //串口1中断服务程序{u8 Res;#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OSOSIntEnter(); #endifif(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res =USART_ReceiveData(USART1);//读取接收到的数据if((USART_RX_STA&0x8000)==0)//接收未完成{if(USART_RX_STA&0x4000)//接收到了0x0d /r{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 /nelse USART_RX_STA|=0x8000;//接收完成了 }else //还没收到0X0D /r{if(Res==0x0d)USART_RX_STA|=0x4000;else{USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;USART_RX_STA++;if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收 } }} } #if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.OSIntExit(); #endif}
阅读全文
1 0
- STM32学习——串口
- stm32学习笔记——串口通信
- STM32学习笔记5——串口
- STM32学习笔记——串口通信
- stm32快速学习5——串口中断接收
- stm32快速学习4——串口发送字符
- STM32入门——第二天学习串口收发
- 嵌入式系统学习——STM32之串口通信UART
- STM32单片机学习笔记——USART串口通信
- STM32系统学习——USART(串口通信)
- STM32——串口通信
- STM32学习笔记-串口
- 通过串口实现stm32的IAP功能————stm32学习笔记
- STM32:STM32学习记录4:串口
- stm32——串口1和串口2初始化
- STM32-串口实验学习笔记
- stm32串口学习(一)
- stm32串口学习(二)
- 设计模式之工厂模式
- 欢迎使用CSDN-markdown编辑器
- 傻傻分不清的tr,th和td
- java线程池
- python爬虫豆瓣图片(三)
- STM32学习——串口
- 51Nod
- 抽象类(abstract class)和接口(interface)
- centos虚拟机无法上网
- OpenCV学习第十三篇:提取水平和垂直线(去除干扰线)
- SQL----关系型数据库之模式
- 工厂模式的简单案例
- echart插件新增会员案例
- c++Primer习题第九章(2)