发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表
打印
[技术问答]

H32F460进中断的问题

[复制链接]
2834|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 kk810226 于 2025-2-13 18:57 编辑

使用TMRO的CH-A做100us的时钟中断。使用的同步时钟,中断号使用的INT006,初始化程序采用的小华的范例中的程序。
现在碰到的问题是,仿真的时候大概有70%的机会进不了中断。
通过仿真器看NVIC,也没看到其他中断被挂起或者响应。
进不了中断的后面也就进不了中断了。猜测可能是初始化程序这里的问题。
但是在观察可以进中断和不可以中断时候的TMR0的配置寄存器,NVIC的寄存器,还有INTC的寄存器都没看到差异。。

后面发现通过修改DDL_DelayMS(1U)的延时时间会影响成功的概率。
中间几经波折,最终还是定在了初始的1ms时间,连续跑了10多次都没有出现问题。
但是今天突然又不行了。。
所以想知道这个地方的延时是为了什么的?手册中只是提到了采用异步时钟的时候需要延时。
为什么它会影响中断?或者是其他方面的原因,有没有哪位大佬碰到或知道的。
程序如下:


使用特权

评论回复
沙发
wubangmi| | 2025-2-12 10:01 | 只看该作者
管它同步还是异步,初始化的时候都加上延时,另外这个延时的时候不能被其他中断打断,不然也可能会出现你描述的这种情况。
所以我个人建议按照下面这个方式操作:
  __disable_irq();
  DDL_DelayMS(1U);                             
  __enable_irq();

使用特权

评论回复
板凳
kk810226|  楼主 | 2025-2-13 18:51 | 只看该作者
wubangmi 发表于 2025-2-12 10:01
管它同步还是异步,初始化的时候都加上延时,另外这个延时的时候不能被其他中断打断,不然也可能会出现你描 ...

试了下,还是不行。。。
还有就是测试只打开TMR0中断,还是同样的问题,有没有可能是板子(硬件)的问题?

使用特权

评论回复
地板
wubangmi| | 2025-2-14 09:28 | 只看该作者
拿例程按照你的要求改了下,没什么问题。主频是默认的8M,只加了打印log。
删除了例程里的其他配置,只剩下TMR0的中断和打印log

具体tmr0的配置请看图

1739496368956.jpg (1.04 MB )

1739496368956.jpg

使用特权

评论回复

打赏榜单

kk810226 打赏了 10.00 元 2025-02-14
理由:麻烦了。。。

5
kk810226|  楼主 | 2025-2-14 17:36 | 只看该作者
本帖最后由 kk810226 于 2025-2-14 17:40 编辑
wubangmi 发表于 2025-2-14 09:28
拿例程按照你的要求改了下,没什么问题。主频是默认的8M,只加了打印log。
删除了例程里的其他配置,只剩下 ...
首先感谢您的回复。还抽空做了验证
现在关键它不是不能触发,刚测试了下:在1ms延时那里设了个中断,启动10次,其中有5次可以正常响应中断;
不设中断直接跑,启动10次,10次都不行。
我的主频是200MHz,TMR0的时钟PCLK1是100MHz。

使用特权

评论回复
6
地瓜patch| | 2025-2-28 22:13 | 只看该作者
开中断,中断函数中设短点

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

13

帖子

0

粉丝