打印

Systick定时器干扰其他中断

[复制链接]
1848|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ym0sly 于 2024-6-1 02:00 编辑

Systick定时器干扰其他中断
GD32F4系列这样的芯片上,Systick定时器可能会干扰其他中断,尤其是在使用了标准库的情况下。

如果您在配置了Systick定时器后,发现串口接收中断无法触发,这可能是因为Systick定时器的中断优先级较高,导致其他中断被屏蔽或无法触发。为了解决这个问题,您可以尝试调整中断优先级


使用特权

评论回复
沙发
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:00 编辑

应该将串口接收中断的优先级设置得比Systick定时器中断的优先级更高。这样做的目的是确保在串口有数据到达时,能够及时处理,避免数据丢失或者缓冲区溢出。

使用特权

评论回复
板凳
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:01 编辑

在使用CMSIS或者其他类似的软件框架时,您可以通过以下方式设置中断优先级:

c

NVIC_SetPriority(USARTx_IRQn, priority);



USARTx_IRQn 是串口接收中断对应的中断号,priority 是中断优先级。较高的优先级用较小的数字表示,例如,priority 可以是 0 到 15 之间的整数,0 表示最高优先级。

使用特权

评论回复
地板
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:01 编辑

确保将串口接收中断的优先级设置得比Systick定时器中断的优先级更高,以确保及时处理串口接收数据。

使用特权

评论回复
5
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:02 编辑

检查中断控制寄存器设置: 确保中断控制寄存器的设置正确,以允许串口接收中断触发。

使用特权

评论回复
6
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:02 编辑

检查中断标志位清除: 在串口接收中断服务程序中,确保正确清除中断标志位。如果中断标志位没有被及时清除,可能会导致中断无法再次触发。

使用特权

评论回复
7
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:02 编辑

避免长时间中断处理: 如果您的Systick定时器中断处理时间较长,可以考虑优化中断服务程序,尽量减少中断处理时间,以允许其他中断及时触发。

使用特权

评论回复
8
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:03 编辑

减少中断服务程序中的代码量: 中断服务程序中的代码应该尽可能简洁,只包含必要的操作。避免在中断服务程序中执行复杂或耗时的操作。

使用特权

评论回复
9
ym0sly|  楼主 | 2024-5-31 23:30 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:03 编辑

优化算法和数据结构: 如果中断服务程序涉及到算法或者数据结构,可以考虑优化算法和数据结构,以提高执行效率。

使用特权

评论回复
10
ym0sly|  楼主 | 2024-5-31 23:31 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:03 编辑

避免阻塞操作: 中断服务程序应该避免执行会导致阻塞的操作,例如长时间的延时函数、阻塞式的IO操作等。

使用特权

评论回复
11
ym0sly|  楼主 | 2024-5-31 23:31 | 只看该作者
本帖最后由 ym0sly 于 2024-6-1 02:04 编辑

使用适当的数据缓冲区: 如果中断服务程序需要处理大量的数据,可以考虑使用适当的数据缓冲区,以减少中断服务程序对数据的处理时间。

使用特权

评论回复
12
ym0sly|  楼主 | 2024-6-1 02:04 | 只看该作者
优化编译器选项: 在编译代码时,可以通过调整编译器选项来优化生成的代码,以提高执行效率。

通过以上方法,可以有效地减少中断服务程序的执行时间,确保中断处理能够尽快完成,从而允许其他中断及时触发。

使用特权

评论回复
13
FranklinUNK| | 2024-6-20 20:41 | 只看该作者
优先级设置的问题吧

使用特权

评论回复
14
有何不可0365| | 2024-7-31 21:43 | 只看该作者
Systick定时器可能会干扰其他中断

使用特权

评论回复
15
亚瑟| | 2024-7-31 22:15 | 只看该作者
有冲突吧

使用特权

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

本版积分规则

28

主题

327

帖子

2

粉丝