你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HAL库的串口中断问题

[复制链接]
xiao——张 提问时间:2015-8-21 13:50 /
用cubemx生成的代码,如果想让MCU在串口接收数据时进入串口中断, 只有在调用HAL_UART_Receive_IT的同时接收到数据才能进入中断吗??
收藏 评论7 发布时间:2015-8-21 13:50

举报

7个回答
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
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
学习学习

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版