搜索

[技术问答] NMI中断的作用?

[复制链接]
778|4
 楼主 | 2019-8-23 16:03 | 显示全部楼层 |阅读模式
本帖最后由 AutochipsMCU 于 2019-8-23 16:07 编辑

NMI中断是不可屏蔽中断,算是ARM内核的标配了。所以Cortex-M3内核的AC781x也不例外。
1566197839068.png
本帖与大家分享一下该中断的作用。
1.晶体振荡器监控功能
CKGEN_SRC_SEL[16]=1使能XOSC 监控系统。使能XOSC监控系统后,如果在HSE振荡器时钟上检测到故障,则该振荡器会被自动禁用,XOSC失效状态标志置起并且生成NMI中断以通知软件故障允许MCU执行救援操作。
比如:MCU时钟源为外部晶体时,短接晶体,模拟异常情况。这时会产生NMI中断。
这时需要实现NMI_Handler对系统进行复位。(NMI_Handler中断的入口地址已在startup_ac78xx.s中进行了指定,只需在程序的任何位置实现NMI_Handler中断处理程序即可)
void NMI_Handler(void)
{
WriteBitsValue(0x40000010, 16, 1, 1); //清除所有复位状态
NVIC_SystemReset();//复位系统
return;
}

2.待机模式(CPU和各个模块都被关闭)下,NMI引脚可唤醒MCU。




使用特权

评论回复
| 2019-10-3 10:24 | 显示全部楼层
谢谢分享!

使用特权

评论回复
| 2019-10-3 10:27 | 显示全部楼层
谢谢分享!

使用特权

评论回复
| 2019-10-12 15:42 | 显示全部楼层
如果外部晶振异常了,重启MCU也于事无补呀,一直异常一直重启,一直重启一直异常,貌似应该可以异常后切到内部晶振去运行倒有点作用

使用特权

评论回复
 楼主 | 2019-10-14 17:46 | 显示全部楼层
zchunhua25 发表于 2019-10-12 15:42
如果外部晶振异常了,重启MCU也于事无补呀,一直异常一直重启,一直重启一直异常,貌似应该可以异常后切到 ...

是的,不过这个异常只要有中断产生,软件怎么做只是策略的问题。针对您说的这种情况,软件在初始化时钟时,可以根据标志位来判断是用内部时钟还是外部时钟。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表