Part Number:AM2432
冷启动调试程序,开始时,Timer可以正常产生中断,并进入中断服务。反复运行一段时间后,就会出现Timer中断失效,Timer计数器计数正常累加,检查Timer和VIM寄存器,一切都设置正常,就是没有中断。其他的ADC和PRU中断,都可以正常中断。仿真器重新加载程序,也没有中断,设置TIMER8_CFG_CFG_IRQ_EOI=0,还是没中断,必须要复位PORz冷启动,才能再次产生中断。以下是Timer和VIM的设置:
TIMER8_CFG_CFG_TIDR
50003900 00000000 00000000 00000000
TIMER8_CFG_CFG_TIOCP_CFG
00000008 00000000 00000000 00000000
TIMER8_CFG_CFG_IRQ_EOI
00000000
TIMER8_CFG_CFG_IRQSTATUS_RAW
00000005
TIMER8_CFG_CFG_IRQSTATUS
00000005
TIMER8_CFG_CFG_IRQSTATUS_SET
00000007
TIMER8_CFG_CFG_IRQSTATUS_CLR
00000007
TIMER8_CFG_CFG_IRQWAKEEN
00000007
TIMER8_CFG_CFG_TCLR
00000003
TIMER8_CFG_CFG_TCRR
FFFFBC21
TIMER8_CFG_CFG_TLDR
FFFF9E56
TIMER8_CFG_CFG_TTGR
FFFFFFFF
TIMER8_CFG_CFG_TWPS
00000000
TIMER8_CFG_CFG_TMAR
FFFFF000
TIMER8_CFG_CFG_TCAR1
00000000
TIMER8_CFG_CFG_TSICR
00000004
TIMER8_CFG_CFG_TCAR2
00000000
TIMER8_CFG_CFG_TPIR
00000000
TIMER8_CFG_CFG_TNIR
00000000
TIMER8_CFG_CFG_TCVR
00000010
TIMER8_CFG_CFG_TOCR
00000000
TIMER8_CFG_CFG_TOWR
00000000
Gary Lu:
您好,有几个可能的原因需要排查。首先,你可以检查以下几点:
1. 确保中断使能位被正确设置。通过检查相关寄存器(如TIMER8_CFG_CFG_IRQ_EOI)来确认是否正确启用了中断。
2. 检查中断优先级设置。确保Timer的中断优先级设置正确,并且没有被其他中断抢占。
3. 检查中断服务程序是否正确。确保你的中断服务程序被正确地注册,并且没有其他地方对中断进行了屏蔽或禁用的操作。
4. 检查中断标志位是否被清除。在处理完中断后,确保你的中断服务程序正确地清除了中断标志位。
如果以上步骤都没能解决问题,那可能需要进一步分析你的代码和硬件环境,以找到更具体的原因。希望这些提示能对你有所帮助!如果还有其他问题,请随时提问。
,
li ljch:
好的,谢谢
,
Gary Lu:
不客气,有问题随时交流,谢谢!