timer中断代码不对导致的错误

无意中在timer中断处理函数中直接返回0


然后导致在start_kernel函数中的kmem_cache_init_late函数卡住。



另外,还遇到一个情况,也是单步到kmem_cache_init_late函数卡住,但是原因完全不一样。

那是硬件中断线没有接好,在kmem_cache_init_late函数之前有个local_irq_enable(),这是使能中断函数,当内核运行到这里的时候,timer中断已经初始化完毕,当中断一使能,就应该会响应中断,但是这个时候硬件有问题,出了一个8号异常,epc=0x0。

所以,单步到kmem_cache_init_late函数卡住,只是一个假象(调试信息和代码对应不上),其实在之前已经挂掉了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在MSP432中,定时器中断函数的编写需要注意清除计数器计数以及中断。如果不清除计数器计数和中断,可能会导致单片机卡死。可以使用Timer_A_clearCaptureCompareInterrupt函数清除中断状态,使用Timer_A_clearTimer函数清除定时器计数。\[1\] 引用\[2\]:在配置定时器之前,需要定义一些参数。比如TIMER_PERIOD表示定时器的周期,upConfig是Timer_A_UpModeConfig类型的结构体,其中包含了定时器的一些配置参数,如时钟源、时钟分频器、定时器周期、是否使能中断等。\[2\] 引用\[3\]:在MSP432的Driver Lib中,有一个打开TimerA中断的例子。这个例子中包含了定时器的初始化、main函数和中断函数。需要注意的是,在TI的中断函数中,没有清除定时器的计数,导致数值一直溢出,会卡死在中断。为了纠正这个错误,可以在中断函数中添加清除计数器的代码。\[3\] 综上所述,编写MSP432定时器中断函数时,需要注意清除计数器计数和中断,以避免单片机卡死。同时,可以参考Driver Lib中的例子来进行编写。 #### 引用[.reference_title] - *1* *2* *3* [msp432快速入门第七节之定时器中断](https://blog.csdn.net/qq_44151690/article/details/119808309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值