打印
[STM32F1]

串口中断接收方式,接收一会后不在接收了,是为什么?

[复制链接]
307|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
medety|  楼主 | 2023-10-25 10:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用CubeMX生成的初始化程序。
在大循环之前使能中断:
HAL_UART_Receive_IT(&huart2,&RxBuffer,1);
另外在中断里面,继续打开HAL_UART_Receive_IT(&huart2,&RxBuffer,1);。

用串口工具跟MCU 发送数据,发现RxBuffer满了之后,RxBuffer就不会再更新数据了,是为什么呢?
比如RxBuffer这个数据定义的是128字节,当往串口发送超过128字节的时候,用仿真的方式查看RxBuffer数组的数据,发现不再更新了。不再进去到中断了。

是什么缘故导致的异常??

需要怎么处理,才不会有这种异常?

使用特权

评论回复
沙发
jcky001| | 2023-10-25 10:43 | 只看该作者
查看硬件和软件的配置,

使用特权

评论回复
板凳
elephant00| | 2023-10-25 10:44 | 只看该作者
接收中断被使能,但未被触发:首先,要确保你的UART硬件和中断控制器都支持并正确配置了接收中断。此外,还需要确认当有新数据到达时,该中断会被正确触发。在CubeMX中,你可以使用"Interrupt"选项卡来配置中断,并使用"Peripherals"选项卡来检查UART和中断控制器的配置。
缓冲区未更新:在中断服务程序(ISR)中,你应确保通过调用HAL_UART_Receive_IT(&huart2,&RxBuffer,1);来正确地启动下一次接收中断。此外,你还需要检查RxBuffer数组的写入端是否正确配置并更新。如果你在主程序中向RxBuffer写入数据,那么你需要确保该写入操作不会覆盖RxBuffer的读取指针。
数据溢出:如果你的应用程序在接收数据时处理不及时,可能会导致RxBuffer溢出。为了避免这种情况,你可以在ISR中增加一些处理时间延迟的代码,或者增加一个状态标志来通知主程序有新数据到达。这样,主程序就可以在有新数据到达时立即处理这些数据,而不是等到下一次中断发生时才处理。
配置错误:请检查你的UART和中断控制器的配置是否正确。例如,检查接收缓冲区的大小是否与你的预期相符,检查接收中断是否被正确使能等。

使用特权

评论回复
地板
medety|  楼主 | 2023-10-25 12:33 | 只看该作者
elephant00 发表于 2023-10-25 10:44
接收中断被使能,但未被触发:首先,要确保你的UART硬件和中断控制器都支持并正确配置了接收中断。此外,还 ...

有哦。
可以收到的。

就是比如空间定义了128字节,
一次发送10字节,那等发完了13次之后,就不会有中断了。
这个是为何。
HAL_UART_Receive_IT(&huart2,&RxBuffer,1);

使用特权

评论回复
5
zlf1208| | 2023-10-25 13:54 | 只看该作者
本帖最后由 zlf1208 于 2023-10-25 14:08 编辑

收到数据后需将数据从接受缓存移走,否则接收缓存满了以后就不再接收新的数据,这是规则。

使用特权

评论回复
6
medety|  楼主 | 2023-10-25 16:40 | 只看该作者
zlf1208 发表于 2023-10-25 13:54
收到数据后需将数据从接受缓存移走,否则接收缓存满了以后就不再接收新的数据,这是规则。 ...

那怎么才是移动了哦?
我只会复制呢,复制自己定义的那个数组数据。

使用特权

评论回复
7
zlf1208| | 2023-10-26 08:09 | 只看该作者
本帖最后由 zlf1208 于 2023-10-26 08:25 编辑
medety 发表于 2023-10-25 16:40
那怎么才是移动了哦?
我只会复制呢,复制自己定义的那个数组数据。

我有十年没亲自写程序了,如果缓存是硬件本身自带的,那么读出后保存到别处就行,如果是自己定义的,可能是数组下标越界了,你要在程序中自己处理这些。总之,不论缓存是硬件自带的还是编程时自己定义的,绝对不能让缓存溢出。

使用特权

评论回复
8
木子李惠| | 2023-10-26 10:41 | 只看该作者
HAL库你进入中断中,然后在中断中进行把接收中断标志位清了就可以,len = USARTx->SR;
    len = USARTx->DR;还有读一下这两个寄存器 x表示你的串口是哪个,你现在为 USART2 ,

使用特权

评论回复
9
Clyde011| | 2024-1-1 12:15 | 只看该作者

其他的信号和地要与这些高压引线和它的散热部分隔开

使用特权

评论回复
10
万图| | 2024-1-1 14:11 | 只看该作者

功率开关或整流环的连接没有直接接到电容的两端

使用特权

评论回复
11
Uriah| | 2024-1-1 15:14 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

69

帖子

0

粉丝