STM32/STM8技术william hill官网
直播中

张亮

7年用户 179经验值
私信 关注
[问答]

请问怎么让MCU在串口接收数据时进入串口中断

用cubemx生成的代码,如果想让MCU在串口接收数据时进入串口中断, 只有在调用HAL_UART_Receive_IT的同时接收到数据才能进入中断吗??

回帖(7)

姬房有

2018-11-21 09:19:39
是的,新的HAL库和以前的略有不同
举报

张亮

2018-11-21 09:28:37
引用: wq644921241 发表于 2018-11-21 11:47
是的,新的HAL库和以前的略有不同

那如果想要用串口中断打断正在运行的程序 , 就要反复调用这个函数吧?  那岂不是太浪费时间了?
举报

黄敏

2018-11-21 09:46:06
举报

周丽

2018-11-21 09:56:36
引用: bbs注册 发表于 2018-11-21 11:56
那如果想要用串口中断打断正在运行的程序 , 就要反复调用这个函数吧?  那岂不是太浪费时间了?

HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)函数的功能是设置接收中断的参数,以及使能接收中断。查看一下它的代码就明白了。
函数的第一个参数是串口实例句柄,第二个参数是用于存储接收数据的指针,第三个则是接收多少个数据之后调用接收完成回调函数HAL_UART_RxCpltCallback( )。
举报

周丽

2018-11-21 10:04:42
本帖最后由 adlu 于 2015-8-28 10:49 编辑

使用HAL库进行串口中断接收的基本步骤如下:
1.用CubeMX配置UART参数,包括使能UART接收中断,生成程序框架,这一步完成了UART的初始化
2.调用HAL_UART_Receive_IT( )使能接收中断,设置接收数据存储指针和接收数据量;
3.在HAL_UART_RxCpltCallback( )中编写数据处理代码。
举报

周丽

2018-11-21 10:14:20
本帖最后由 adlu 于 2015-8-28 10:57 编辑

对于刚使用HAL的用户,要理解它的回调机制并不容易。
可以参考下面这篇文章《使用STM32CubeMX实现中断模式下的串口收发》
http://www.wenkuxiazai.com/doc/c0310a8b227916888586d77e.html
还有版主netlhx的《nucleo教程之三:定个时》
http://www.stmcu.org/module/forum/thread-598395-1-1.html
举报

王丹青

2018-11-21 10:32:19
学习学习
举报

更多回帖

发帖
×
20
完善资料,
赚取积分