想使用AWU模式 首先得知道它是通过内部低速时钟LSI产生的(也可以是HSI)可以自己设置
注意:使用的前提的得先让单片机进入低功耗模式 halt(); 直接上源码
void AWU_Init_Config(void)
{
? CLK_LSICmd(ENABLE);//使能内部低速时钟LSI
? AWU_Init(AWU_TIMEBASE_2S);
}
使能LSI时钟 让AWU两秒进入一次 中断
/*中断函数*/
uint8_t Flag = 0;
INTERRUPT_HANDLER(AWU_IRQHandler, 1)
{
? /* In order to detect unexpected events during development,
? ? ?it is recommended to set a breakpoint on the following instruction.
? */
? FlagStatus flag_status;
? flag_status = AWU_GetFlagStatus();
? if (flag_status == SET) // SET or RESET
? {
? ? Flag = 1;
? }
}
?flag_status = AWU_GetFlagStatus();
这句的意思是判断是否产生中断 读走AWU_CSR_AWUF标志位 读走自动清零?
设置一个标置位进循环?
while (1)
{
if( Flag == 1)
{
Flag = 0;
GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
Delay(0xFFFF);
GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
Delay(0xFFFF);
halt();
}
}
****** 注意:想进入中断必须先让单片机进入低功耗模式 否则内部计数器无法计数?halt();
|