上一篇“stm32L431 串口中断接收和发送(不定长度)”文章写后,想想还是把“stm32F103 串口中断接收和发送(不定长度)”也写一下,想法和做法与上一篇完全一致,只是“stm32L431” 与“stm32F103”串口相关寄存器略有差异。
主导思想是:
1、用STM32CubeMX完成IO口和串口初始化。
2、用串口相关寄存器直接操作替代HAL库(本人不喜欢也不太懂HAL库)调用。
3、支持printf()函数
4、串口中断
接收中断:只负责将接收到的数据存入“接收输入指针”指向的接收缓冲区数组,同时置“接收完成标志”,“接收输入指针”加1。在主程序中从接收缓冲区数组读接收数据时“接收输出指针”加1,当“接收输出指针”等于“接收输入指针”时清“接收完成标志”。
发送中断:如果“发送输出指针”指向的发送缓冲区数组有待发送数据就发送,同时清”接收完成标志“,“发送输出指针”加1 。没有待发送数据(“发送输出指针”等于“发送输入指针”)置“发送完成标志"。在主程序中发送数据时,将待发送数据写入“发送输入指针”指向的发送缓冲区,同时”清”发送完成标志“同时允许发送中断。
具体操作:
1、由STM32CubeMX生成Keil工程“STM32F103_TEST”





&spm=1001.2101.3001.5002&articleId=142486318&d=1&t=3&u=62f3c50f9e02402a991557e023c9443d)
3396

被折叠的 条评论
为什么被折叠?



