硬汉嵌入式论坛

 找回密码
 立即注册
查看: 631|回复: 7
收起左侧

[技术讨论] STM32L4串口空闲中断被取消

[复制链接]

7

主题

11

回帖

32

积分

新手上路

积分
32
发表于 2023-11-29 18:20:21 | 显示全部楼层 |阅读模式
本帖最后由 Kg_lz 于 2023-11-29 18:22 编辑

我一开始在串口初始化的地方开启了串口空闲中断,串口使用232与电脑通讯,先主机通电,然后再给232相关电路上电,然后串口通讯就只能通讯一次,完事空闲中断就被关了。但是如果232和主机一起上电,空闲中断就不会被关掉。


     

1.png
2.png
3.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-11-30 08:02:23 | 显示全部楼层
这个中断处理方式不太好,最好在中断的回调函数里面处理。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2023-11-30 08:25:40 | 显示全部楼层
你使用了hal库自带的中断函数处理,HAL_UART_IRQHandler(&huart2). 可以跟踪这个函数进去,看看它的处理,可能是它关闭了串口中断。 也可以完全注释掉这个函数,用自己的代码处理中断。
回复

使用道具 举报

7

主题

11

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2023-11-30 09:47:36 | 显示全部楼层
eric2013 发表于 2023-11-30 08:02
这个中断处理方式不太好,最好在中断的回调函数里面处理。

好的,我试试看。
回复

使用道具 举报

7

主题

11

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2023-11-30 09:48:21 | 显示全部楼层
caicaptain2 发表于 2023-11-30 08:25
你使用了hal库自带的中断函数处理,HAL_UART_IRQHandler(&huart2). 可以跟踪这个函数进去,看看它的处理, ...

同时上电与后上电造成的这个区别,更让我纳闷
回复

使用道具 举报

3

主题

96

回帖

105

积分

初级会员

积分
105
发表于 2023-12-12 09:37:59 | 显示全部楼层
eric2013 发表于 2023-11-30 08:02
这个中断处理方式不太好,最好在中断的回调函数里面处理。

问一下硬汉,中断回调不就是在中断中处理吗?有区别吗?如果想要不占用中断处理时间,不应该是开一个标志位在主循环中处理吗?
回复

使用道具 举报

2

主题

269

回帖

275

积分

高级会员

积分
275
发表于 2023-12-12 14:43:14 | 显示全部楼层
2859932063 发表于 2023-12-12 09:37
问一下硬汉,中断回调不就是在中断中处理吗?有区别吗?如果想要不占用中断处理时间,不应该是开一个标志 ...

硬汉大佬说的是不应该在USART2_IRQHandler的硬中断入口函数处理应该是用hal回调机制处理

注意看楼主的截图,HAL UART IRQHandler是hal库负责处理串口标志位和调用回调函数 楼主有调用处理函数前把串口的一些标志位清除了这样hal库进去HAL UART IRQHandler(shuart2)可能会不正常。
USART2_IRQHandler()
...
/USER CODE END USART2 IRQn 0 *
HAL UART IRQHandler(shuart2);
/USER CODE BEGIN USART2 IRQn 1 *
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
发表于 2024-2-21 17:26:48 | 显示全部楼层
如果在接收的过程中发生串口错误HAL库的中断处理机制会关闭串口中断使能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 00:20 , Processed in 0.234634 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表