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

关于HAL库的问题

[复制链接]
yyq006 提问时间:2017-4-26 10:35 /
在串口中断里下面这句起什么作用,刚接触,可能问的比较白痴 ,还请各位大佬不吝赐教。
HAL_UART_IRQHandler(&huart1);
还有,我想在串口中断里单个字节接收数据,然后自己处理组合字符串,但在HAL库里没找到单个字节接收的函数,只有下面这个2个接收多字节的,应该怎么用
HAL_UART_Receive
HAL_UART_Receive_IT


收藏 1 评论13 发布时间:2017-4-26 10:35

举报

13个回答
愚民点子 回答时间:2017-4-26 11:08:17
通过回调函数处理
HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart1)
奏奏奏 回答时间:2017-4-26 11:27:59
本帖最后由 奏奏奏 于 2017-4-26 11:41 编辑

请参考这个例程:
标题是:使用STM32CubeMX实现中断模式下的串口收发
链接地址是:https://wenku.baidu.com/view/c0310a8b227916888586d77e.html
zhao.zhao 回答时间:2017-4-26 11:29:46
第一句是串口发送接收中断入口函数;
第二句是串口接收中断的一次调用,一般这句用户不用关心,系统做好了,系统自己会直接调用的;
第三句是设置串口X接收的数据存放位置及接收多少个数据产生一次接收中断
海迹天涯 回答时间:2017-4-26 13:58:43
自己在中断函数里面写寄存器
yyq006 回答时间:2017-4-26 14:08:23
LIUBEIHUA 发表于 2017-4-26 11:08
通过回调函数处理
HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart1)

回调函数是接收中断发生后自动执行的吗?
yyq006 回答时间:2017-4-26 14:12:21
奏奏奏 发表于 2017-4-26 11:27
请参考这个例程:
标题是:使用STM32CubeMX实现中断模式下的串口收发
链接地址是:https://wenku.baidu.com ...

我看了一下,这句
if(HAL_UART_Receive_IT(&huart5,aRxBuffer,1)!=HAL_OK)Error_Handler();开启接收中断
提示Error_Handler()是无效的,是怎么回事
愚民点子 回答时间:2017-4-26 14:39:08
STM32F030 C8 UARt1

UART1_C8.rar

下载

3.37 MB, 下载次数: 16, 下载积分: ST金币 -1

yyq006 回答时间:2017-4-26 16:10:45

我看了您的程序,是在主循环里查询串口状态,好像没有用中断接收啊
奏奏奏 回答时间:2017-4-26 18:14:21
yyq006 发表于 2017-4-26 14:12
我看了一下,这句
if(HAL_UART_Receive_IT(&huart5,aRxBuffer,1)!=HAL_OK)Error_Handler();开启接收中断
...

我在项目中只用了他接收部分的
发送部分的我没有使用,所以不知道你说的这个问题
yyq006 回答时间:2017-4-28 13:47:47
有点明白了,ST不建议直接在中断接口里写用户程序,回调函数就相当于是中断程序。不过这样貌似效率不是很高。
zhao.zhao 回答时间:2017-4-29 11:59:37
yyq006 发表于 2017-4-26 14:08
回调函数是接收中断发生后自动执行的吗?

是的
zhao.zhao 回答时间:2017-4-29 12:02:51
yyq006 发表于 2017-4-28 13:47
有点明白了,ST不建议直接在中断接口里写用户程序,回调函数就相当于是中断程序。不过这样貌似效率不是很高 ...

系统程序跑得快,串口速度慢,所以效率低些没关系,但是编程效率高了。如果要效率高,最好用寄存器操作,不要用库什么的
zbber 回答时间:2017-4-30 10:01:30
自己在中断函数里面写寄存器

所属标签

相似问题

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