第四章 stm32 cubemx 串口中断实验以及proteus仿真(下)
文章目录
前言
本章接着上一章串口实验的内容,讲串口的中断实验。中断一般为接收中断,即将函数发送后利用中断的方式进行接收。
一、串口中断
上一章在STM32 CUBEMX的配置过程中,已经开启了串口的中断。串口的中断包括发送中断(不常用)和接收中断。一般在写一个大型的工程文件时,串口需要配合DMA使用,用来增加cpu的处理效率,此时暂时不讲。本章主要利用串口中断来实现数据的接收。本章的实验效果为利用串口2进行数据发送,利用串口1进行数据接收,再利用串口1将数据发送到com口打印出来进行实时显示。本章为仿真效果,若在stm32F103的板子上运行注意IO口的对应,如果实现两个板子的通信注意两个板子需要共地,即将两个板子的GND连接在一起。
二、使能串口中断
加入串口中断使能函数
每次进入串口中断函数hal库会自动取消中断函数使能,此时需要再次使能函数。
uint8_t axbuffer[5];
HAL_UART_Receive_IT(&huart1, axbuffer, 5);
三.加入主函数
四.寻找中断回调函数
本章所引入的串口中断,触发方式为收到数据时,触发中断,进入中断函数。如图所示,为串口中断函数,选中函数点击鼠标右键选择go definition可以进入到函数内部。
加入中断回调函数
代码如下(示例):
uint8_t buffer1[5];
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//中断回调函数
{
buffer1[0] = axbuffer[0];
buffer1[1] = axbuffer[1];
buffer1[2] = axbuffer[2];
buffer1[3] = axbuffer[3];
buffer1[4] = axbuffer[4];
HAL_UART_Transmit(&huart1, buffer1, 5, 999);
HAL_UART_Receive_IT(&huart1, axbuffer, 5);//再次使能
}
四.Proteus仿真或者烧录可直接看到效果。
注意利用串口1和串口2通信时IO口的对应关系,本章例程为由uart2的PA2发送,由串口1的PA10进行中断接收,PA10-PA2。![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/620f2be659c5a5f5a7bc5403586e148b.png)
总结
以上就是今天要讲的内容,本文为上一章的延续以及利用Proteus仿真看到的效果。
上一章详情参考:第四章 stm32 cubemx 串口实验以及proteus仿真
如果是在基础配置Cubemx或者基础操作Proteus时出现问题请参考:第一章 stm32 cubemx基础配置实验以及proteus 8的使用