STM32F103RBT6的ADC模拟看门狗中断的报警红灯亮起

2019-07-14 17:32发布

     本人用STM32F103RBT6 的 ADC 1模块的通道14 对外部的电压进行连续检测, 当中用到了DMA1传输。为了对电压的极限范围进行监测,用了ADC1模块中的模拟看门狗中断。为了保险期间,程序编写时都用STM32里的现成库函数进行操作。
     在线调试基本没有问题 。外部的电压保持在1.25V左右,用WATCH 窗口可以看到 DMA1传输到内部存储器的AD值在1568左右。当把模拟看门狗中断的上限值改为1569(下限值保持100不变),在线调试时,进入ADC1_2_IRQHandler()中断函数,中断函数里的报警灯也如期亮了起来。
     把模拟看门狗中断的上限值改为2000(对应外部输入电压为1.6V),下限值还是保持100不变。烧录程序,断电,不连DEBUG工具。重新上电,发现报警红灯亮了起来 。 再断电,再重新上电,报警红灯依旧亮了!!!!
    是否上电时AD检测端的电压波动,导致进入中断。 于是把模拟看门狗中断的上限值改为4095(对应外部输入电压为3.28V),下限值还是保持100不变. 断电,不连DEBUG工具,重新上电。发现问题依旧。
    为了排除上电时AD检测端的电压波动影响。 于是在程序里先把模拟看门狗中断的使能位关掉。 通过一个按键的按下再把模拟看门狗中断的使能位打开。模拟看门狗中断的上限值保持4095 不变。 上电后,等了一段时间 ,按下按键, 模拟看门狗中断被使能。很不幸, 报警红灯又亮了!
    是不是设置的问题啊 ,于是再对了STM32里面的ADC设置库函数,DMA设置库函数等。也没有发现问题。改设置的都设置了。
      现在的问题:只要不连DEBUG工具, 烧录程序后,重新上电, 模拟看门狗就会进入中断函数,万恶的红灯就会亮起来!!!!  
       查不出问题到底究竟在哪里, 求各位大侠指教啊!!!    原子大大能不能指点一下,万分感谢!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
nvhwdfwre
1楼-- · 2019-07-14 20:54
是否考虑过可能有低于下限而进入报警的情况呢?
Sabrina_cc
2楼-- · 2019-07-15 02:03
用示波器看看AD检测端的波形变化如何
小华同学
3楼-- · 2019-07-15 07:30
对比连DEBUG工具和不连时有关电路的电平状态,看有没有不同
maruidiyi
4楼-- · 2019-07-15 08:07
 精彩回答 2  元偷偷看……
东少2016
5楼-- · 2019-07-15 09:34
建议将你的测量值挨个打印出来,看是否数据有波动,如果数据正常,只是有波动,建议滤波,平均下,不要使用瞬时值,瞬时值相对会出现峰值,波动太大了。
可以加个100ms滤波
爱雪爱雪
6楼-- · 2019-07-15 11:36
感觉电压波动不会那么大,应该在仔细看看程序吧
还有就是你说连上DEBUG工具和不连DEBUG工具不一样,最好测量一下这两种情况下电压的情况

一周热门 更多>