xiao——张 发表于 2015-8-21 13:50:52

HAL库的串口中断问题

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

netlhx 发表于 2015-8-21 20:22:37

是的,新的HAL库和以前的略有不同

xiao——张 发表于 2015-8-21 22:30:29

netlhx 发表于 2015-8-21 20:22
是的,新的HAL库和以前的略有不同

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

你好我好大家好! 发表于 2015-8-22 22:07:42

:loveliness::loveliness::loveliness::loveliness::loveliness::loveliness:

adlu 发表于 2015-8-28 10:36:42

xiao——张 发表于 2015-8-21 22:30
那如果想要用串口中断打断正在运行的程序 , 就要反复调用这个函数吧?那岂不是太浪费时间了? ...
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)函数的功能是设置接收中断的参数,以及使能接收中断。查看一下它的代码就明白了。
函数的第一个参数是串口实例句柄,第二个参数是用于存储接收数据的指针,第三个则是接收多少个数据之后调用接收完成回调函数HAL_UART_RxCpltCallback( )。

adlu 发表于 2015-8-28 10:48:05

本帖最后由 adlu 于 2015-8-28 10:49 编辑

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

adlu 发表于 2015-8-28 10:52:00

本帖最后由 adlu 于 2015-8-28 10:57 编辑

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


yiban-406032 发表于 2016-12-20 16:49:34

学习学习:D:D
页: [1]
查看完整版本: HAL库的串口中断问题