单片机/MCU论坛
直播中

哈哈哈

9年用户 761经验值
擅长:可编程逻辑
私信 关注
[问答]

M451要如何设定才不会停留在ADC中断程式内?

请问 M451 有开启ADC中断模式 NVIC_EnableIRQ(ADC00_IRQn); ,但ADC中断程式内没有设中断点,
单步执行时会一直进入ADC中断程式,要如何设定才不会停留在ADC中断程式内?
谢谢

回帖(2)

赵晨

2024-1-17 10:09:04
应该是之前有下过软体的断点没有清除。
在下载的时侯,选定erase full chip。
并在keil debug mode中,清除所有的断点
举报

mintsy

2024-1-17 11:29:51
要停留在ADC中断程序内部,可能是因为在ADC中断程序中没有清除中断标志位,导致下一次中断发生时仍然会进入ADC中断程序。

要解决这个问题,你需要在ADC中断程序的开头添加清除中断标志位的代码。在M451系列的MCU中,可以使用ADC_CLR_INT_FLAG函数来清除ADC的中断标志位。要使用该函数,你需要调用`ADC_SET_INT_FLAG(ADC, ADC_ADF_INT);`函数来设置要清除的中断标志位。

下面是一个示例代码:

```c
void ADC00_IRQHandler(void)
{
    // 清除ADC中断标志位
    ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
    // 其他的ADC中断处理代码
}

int main(void)
{
    // 初始化ADC等相关配置

    // 开启ADC中断模式
    NVIC_EnableIRQ(ADC00_IRQn);

    while(1)
    {
        // 执行其他任务
    }
}
```

通过在ADC中断程序的开头添加清除中断标志位的代码,你应该能够正常执行其他任务,而不会一直停留在ADC中断程序内部。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分