新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2017-8-5
- 在线时间
- 1 小时
|
2金钱
以下内容修改自战舰源码库函数版的待机唤醒实验
中文参考手册中说PWR_CSR寄存器的EWUP位在复位的时候会清除这一位,我想利用这一位来判断是WKUP键唤醒的还是RTC闹钟唤醒的,如果是闹钟唤醒的蜂鸣器就会响,于是我定义了一个变量
u8 alarmst = 0;
并在WKUP_Init()(战舰源码) 前判断这一位是否为零,如果不为零,则置alarmst为1:
if(PWR->CR&(1<<8)) //EWUP是位8
{
alarmst = 1;
}
然后在WKUP_Init()内修改一行代码:
if((Check_WKUP()==0)&&(!alarmst)) Sys_Standby();
因为判断语句在WKUP_Init()之前,所以在我看来alarmst依然是0,所以如果不按下WKUP键 依然会进入待机模式。
在while(1)循环中我加入了:
if(alarmst)
{
BEEP = !BEEP;
}
结果运行之后不仅没有待机而且蜂鸣器一直响,明显alarmst被置1了,我以为EWUP的默认值就是1,于是我按了RESET按键,结果依然是这样。
中文参考手册中确实注了在系统复位时清除这一位,为什么 if(PWR->CR&(1<<8))这个判断一直成立?
附上我修改的代码
谢谢指教
|
|