打印
[技术问答]

H32F460进中断的问题

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

使用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();

使用特权

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

本版积分规则

5

主题

10

帖子

0

粉丝