NMI_Handler PROC
时间: 2024-04-28 19:24:56 浏览: 19
NMI_Handler是一个过程(Procedure),也可以理解为一个中断服务程序。当在使用某个外设的时候,开启了某个中断,但忘记编写配套的中断服务程序或者函数名写错时,当中断到来时,程序就会跳转到启动文件预先写好的空的中断服务程序NMI_Handler中,然后在这个空函数中无限循环,即程序就死在这里。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [STM32启动文件详解](https://blog.csdn.net/weixin_44058570/article/details/120045082)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
NMI_Handler
NMI_Handler是一个函数,用于处理NMI(Non-Maskable Interrupt)中断。当NMI引脚在电路上接地时,程序在启动时会触发NMI中断,并进入NMI_Handler函数。这个函数的原型如下:
```c
void NMI_Handler(void) {
// 中断处理代码
}
```
在这个函数中,你可以编写处理NMI中断的代码。NMI属于内部中断,并且默认是使能的。如果你想在main函数中操作寄存器更改,是行不通的,因为当NMI引脚接地时,在进入main函数之前就会触发NMI中断。所以,如果你需要处理NMI中断,你可以在NMI_Handler函数中编写相应的代码。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* *3* [关于单片机中的NMI_Handler(不可屏蔽中断处理器)](https://blog.csdn.net/weixin_42240669/article/details/112826556)[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^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [嵌入式开发中断全解(2)Hard Fault的诊断](https://blog.csdn.net/hyk687/article/details/126695965)[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^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
void pwm_clock_init() { do { CS->CLRIFG |= CS_CLRIFG_CLR_DCOR_OPNIFG | CS_CLRIFG_CLR_HFXTIFG | CS_CLRIFG_CLR_LFXTIFG; SYSCTL->NMI_CTLSTAT &= ~ SYSCTL_NMI_CTLSTAT_CS_SRC; }while (SYSCTL->NMI_CTLSTAT & SYSCTL_NMI_CTLSTAT_CS_FLG); CS->KEY = 0; } 请告诉我这段代码的作用
这段代码是用于初始化 PWM 时钟的函数。PWM(脉冲宽度调制)是一种用于产生模拟信号的技术,通常用于控制电机、调光等应用中。
具体来说,这段代码的功能如下:
1. 使用 do-while 循环来清除时钟系统(CS)模块的中断标志位和 NMI(非屏蔽中断)控制状态寄存器中与时钟系统相关的标志位。
2. 将 SYSCTL 模块的 NMI_CTLSTAT 寄存器的 CS_SRC 位清零,即禁用时钟系统的 NMI 中断源。
3. 在循环中检查 NMI_CTLSTAT 寄存器的 CS_FLG 位,如果该位为1,则继续循环,直到该位为0。这是为了确保时钟系统已经完成初始化并稳定。
4. 将 CS 模块的 KEY 寄存器设置为0,以锁定对 CS 模块其他寄存器的写入操作。
总之,这段代码的作用是初始化 PWM 时钟,并确保时钟系统已经初始化完毕并稳定。这样,在使用 PWM 功能之前,可以保证时钟系统的正常工作。