STM8L052C6T6的pvd电压监测异常
1、例如设置的是低于1.85v 产生中断,然后点亮灯提示。2、实际效果出来是:如果是高于1.85v阀值的情况下上电一直工作,不断电,慢慢把电压调低到阀值以下,则不会进入PVD中断。如果是在低于1.85v阀值的情况下,上电,则会进入PVD中断,灯会亮。
3、想要的效果是:如果是高于1.85v阀值的情况下上电一直工作,不断电,慢慢把电压调低到阀值以下,要进入PVD中断,点亮灯。
4、求大神分析是什么情况。谢谢! //-----------------------------------监控VDD电压初始化----------------------------------------
void PVD_Check_init(void)
{
//降PWR寄存器外围重新初始化为默认值
//PWR_CSR1=0x20;
//PWR_CSR2=0x01;
PWR_CSR1_PVDOF=1; //低于阀值
PWR_CSR1_PVDIF=1; //写1来清除标志位
/* PWR_CSR1_PLS检测等级
000: PVD threshold = 1.85 V typ.
001: PVD threshold = 2.05 V typ.
010: PVD threshold = 2.26 V typ.
011: PVD threshold = 2.45 V typ.
100: PVD threshold = 2.65 V typ.
101: PVD threshold = 2.85 V typ.
110: PVD Threshold = 3.05 V typ.
*/
PWR_CSR1_PLS=0; //检测等级
PWR_CSR1_PVDIEN=1;//中断
PWR_CSR1_PVDE=1; //打开检测
}
#pragma vector=EXTIPVD_vector
__interruptvoidEXTIPVD_IRQHandler(void)
{
PWR_CSR1|=0x20; //清除标志位
LCD_RAM2 |= 0x02 ; //点亮电池符号
} 这个问题我还没遇到过,建议楼主可以咨询一下FAE看看怎么操作比较好
STM8能换成STM32就换吧,价格差不多,但是性能差很多
有没有可能,需要把这个中断优先级提高一下呢?
慢慢调到1.85V以下,就不会进入到中断是吧,那你是调再小都不会进入到中断么
建议可以使用库函数写,问题能好找点
你这个PVD监测是不是就开机调用了一次啊?
你试试定时监测PVD电压看看呢?估计就应该行了
其实你用ADC监测是不是能更好点儿,容易一些嘞
楼主可以参考一下这个帖子,看看是否能帮到你,https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=598034&page=1#pid2042153
寄存器属实看不太懂,就问几个可能会引起检测不到的原因哈,中断打开了吗?优先级是多少?还有,你可以用仿真跟一下,为啥进去不中断的
页:
[1]