各位大佬,帮忙看一下,我有个程序,STM32F103C8T6,想用RTC的闹钟唤醒STOP模式,却不成功。测试进STOP模式前,RTC能够正常中断的,进了之后就不能够唤醒了。
进STOP前用下面的计算式记录各寄存器:
(((PWR->CR & 0x00000100) >> 8 )<<0) |
(((RCC->BDCR & 0x00008000) >> 15)<<1) |
(((RCC->BDCR & 0x00000300) >> 8)<<2)|
(((RCC->BDCR & 0x00000002) >> 1)<<4)|
(((RTC->CRH & 0x00000002) >> 1)<<5)|
(((RTC->CRL & 0x00000002) >> 1)<<6)|
(((RTC->CRL & 0x00000001))<<7)|
(((EXTI->IMR & 0x00020000) >> 17)<<8)|
(((EXTI->EMR & 0x00020000) >> 17 )<<9)|
(((EXTI->PR & 0x00020000) >> 17)<<10)|
(((NVIC->ISER[1] & 0x00000200) >> 9 )<<11)|
(((NVIC->ISER[0] & 0x00000008) >> 3 )<<12)
这个值记录下来是0x1137。RTC的ALRH/L寄存器和CNTH/L寄存器也记录过,进STOP前确实CNT小,在STOP里长时间后确实比ALRH/L大了,而且比较时间是在正常的计数的。
发现在STOP状态里,RTC虽然在继续计数,但是原本能够产生的闹钟中断标记ALRF和秒标记SECF都不再产生了。请问这是什么原因,还需要查哪些寄存器的设置?
|