想使用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();
本文介绍了如何在单片机中使用AWU模式,首先确保通过LSI时钟进入低功耗模式,然后配置AWU进行2秒中断,并演示了中断处理和LED控制。重点在于进入中断前的halt()操作和中断后的工作流程。
1219

被折叠的 条评论
为什么被折叠?



