本文主要是介绍STM8L151C8单片机学习例程(10)——WFE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
STM8L_10_WFE
1.User:工程及main文件
2.Hardware:EXIT,RTC,CLK,LED,Delay
3.STM8L15x_StdPeriph_Driver:STM8自带库文件
4.Debug:hex文件存放于EXE文件夹
5.Function: WFE低功耗测试
WFE是wait for event等待事件发生,CPU停止,选中的外设继续进行。下面是电流测试结果图(3.3V供电)。
/**
******************************************************************************
* @file main.c
* @author Alex——小白
* @version V1.0
* @date 2019.5.1
* @brief ADC_Vrefint采集,串口发送电源电压值
* @store Proteus仿真店子
* @Link https://shop484534014.taobao.com/
* @Email 844545015@qq.com
******************************************************************************
* @attention All Rights Reserved
* @note V=1.218*4095/ADCData,读取8次后取平均数来提高精度
**/
#include "stm8l15x.h"
#include "stm8l15x_pwr.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x_clk.h"
#include "stm8l15x_wfe.h"
#include "LED.h"
#include "Delay.h"
#include "CLK.h"
#include "EXIT.h"
void Low_Power_init(void)
{
CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1); //外部低速晶振LSE,精准
/* Wait for LSE clock to be ready */
while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET);
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //RTC时钟使能
RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);
RTC_ITConfig(RTC_IT_WUT, ENABLE);
RTC_SetWakeUpCounter(10);
RTC_WakeUpCmd(ENABLE);
PWR_UltraLowPowerCmd(ENABLE); //开启超低功耗
GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOF, GPIO_Pin_0 , GPIO_Mode_In_PU_No_IT);
GPIO_Init(GPIOC, GPIO_Pin_0, GPIO_Mode_Out_OD_Low_Slow);
GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_Out_OD_Low_Slow);
}
void main(void)
{
CLK_LSE_Config(CLK_SYSCLKDiv_1);//LSE 1分频 32.768KHz
Low_Power_init();
// EXIT_Init();
LED_Init();
WFE_DeInit();
WFE_WakeUpSourceEventCmd(WFE_Source_RTC_CSS_EV, ENABLE);
// WFE_WakeUpSourceEventCmd(WFE_Source_EXTI_EV3, ENABLE);
//选择按键外部中断-WFE_Source_EXTI_EV3 /RTC-WFE_Source_RTC_CSS_EV 作为触发事件
while(1)
{
// EXTI_ClearITPendingBit(EXTI_IT_Pin3); //外部中断触发
// LED0(0);
// Delay(0x0FFF);
// LED0(1);
RTC_ClearITPendingBit(RTC_IT_WUT);
LED1(0);
Delay(0x0FFF);
LED1(1);
wfe();
}
}
如需下载STM8L151C8 IAR源码工程,请关注公众号:
Proteus仿真店子
(若IAR IDE编译器以及驱动,后台回复:IAR;若STM8L相关参考文档,后台回复:STM8L手册;若需其它设计,后台回复:STM8L设计)
这篇关于STM8L151C8单片机学习例程(10)——WFE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!