本文主要是介绍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.768KHzLow_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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!