STM8L探索套件学习笔记-低功耗模式(十二)

发布者:RadiantGlow最新更新时间:2015-12-21 来源: eefocus关键字:STM8L  探索套件  学习笔记  低功耗模式 手机看文章 扫描二维码
随时随地手机看文章
官方给的例程当中,使用PE6作为IDD_WAKUP,将系统从低功耗中唤醒,
STM8L有5种低功耗模式,降低功耗的方法还可以将系统时钟降低或者关闭没有使用的外设。

今天我们就使用U3这个14阶脉动进位计数器M74HC4060进行HALT模式唤醒,从原理图可以看到Q14脚输出的反向连接到T2模拟开关,控制PE6端口。因为经过两个反向器,使用Q14的逻辑等于PE6的逻辑。U3的时钟频率为30KHZ,Q14的脉冲周期为2的14次方除以30KHZ,约等于0.5s,也就是说Q14输出的脉冲是周期大约为1秒,占空比为1:1的方波。所以PE6的电平变化也是周期大约为1秒,占空比为1:1的方波。代码设计如下:
void main(void)
{
  GPIO_Init(LED3_PORT,LED3_PIN,GPIO_Mode_Out_PP_High_Fast);
  //输出低电平-高速10M
  GPIO_Init(LED4_PORT,LED4_PIN,GPIO_Mode_Out_PP_High_Fast);
  //输出低电平-高速10M
  GPIO_Init(CNT_EN_PORT,CNT_EN_PIN,GPIO_Mode_Out_PP_High_Fast);
  GPIO_Init(WAKEUP_PORT,WAKEUP_PIN,GPIO_Mode_In_FL_IT);//PE6
  LCD_GLASS_Init();
  LCD_GLASS_DisplayString("M74HC");
  /* Enable Rising edge port PE6 for wake up conter */
  //EXTI->CR2 = 0x10;
  //上升沿或者下载沿都可以
  EXTI_SetPinSensitivity(EXTI_Pin_6, EXTI_Trigger_Rising);
  /* Enable Interrupts */
 
  enableInterrupts();
  GPIO_ResetBits(GPIOC,GPIO_Pin_4);//使能U3计数器
  /* Infinite loop */
  while (1)
  {
    GPIO_ToggleBits(LED3_PORT,LED3_PIN);
   
   
    halt();//进入HALT模式,外部中断能够唤醒
  }
}
程序开始初始化板上的LED3/LED4,LCD显示测试M74HC计数器的功能。PE6为上升沿触发。进入while后,进入HALT模式,CPU关闭,将不会执行。只有当外部中断发生后才能执行。
中断函数:
INTERRUPT_HANDLER(EXTI6_IRQHandler, 14)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
  sim()
  GPIO_ToggleBits(GPIOC,GPIO_Pin_7);
  /* Clear Interrupt pending bit */
  EXTI_ClearITPendingBit(EXTI_IT_Pin6);
  rim()
}
现象是板上的LED3和4交替,周期1s闪烁,说明CPU在HALT模式和工作模式交替进行。
关键字:STM8L  探索套件  学习笔记  低功耗模式 引用地址:STM8L探索套件学习笔记-低功耗模式(十二)

上一篇:STM8L探索套件学习笔记-AES硬件加密(十三)
下一篇:STM8L探索套件学习笔记-EEPROM(十一)

推荐阅读最新更新时间:2024-03-16 14:40

STM8L IAP升级过程记录
STM8L IAP升级 芯片:STM8LXXX 通讯方式:SPI IDE: IAR for STM8 工作需求,需要实现基于SPI通信的IAP升级,百度了一些资料,爬过了一些坑,现在测试升级ok,因此写篇笔记记录一下整个过程,以下便是整个过程,纯属个人记录,难免有不到的地方,如有错误,麻烦指出。 一、介绍 1) IAP简介 所谓的IAP即应用程序中编程(In-application programming),即可以在产品出厂后,更新程序。既然可以更新程序,那么就要有程序负责这部分功能,这个程序就叫做BootLoader,而被更新的程序就叫做Application. 2)官方BooLoader 如果只是想使用这个功能,而不用自己编写
[单片机]
51单片机学习笔记———10.中断机制
中断 单片机的中断系统是最基础也是最重要的部分,博主在学习这个的时候踩到了很多的坑,于是写下这篇笔记来整理一下自己的思路。 中断涉及的内容: 中断源: C51单片机有5个中断源,C52单片机有6个中断源: 由于多出来的那个中断源不常用,所以我们在这里只介绍C51单片机的中断系统: 8051有3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1 中断整体结构: 与中断有关的寄存器:
[单片机]
51单片机<font color='red'>学习</font><font color='red'>笔记</font>———10.中断机制
stm32学习笔记(一)点亮LED
#include stm32f10x.h #include delay.h void Delay(u32 count) { u32 i=0; for(;i count;i++); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA delay_init(); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-- PA.8 端口配置 GPIO_Ini
[单片机]
stm32<font color='red'>学习</font><font color='red'>笔记</font>(一)点亮LED
TQ2440 学习笔记—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
二、U-Boot第二阶段代码分析 U-Boot 第二阶段流程图 移植U-Boot 的主要工作在于对硬件的初始化、驱动,所以下面的重点放在硬件的操作上。 (1)初始化本阶段要使用到的硬件设备 最主要的是设置系统时钟、初始化串口,只要这两个设置好了就可以从串口看到打印信息。 board_init 函数设置MPLL、改变系统时钟,它是开发板相关的函数,在board/EmbedSky/EmbedSky.c 中实现。 board_init 函数还保存了机器类型ID,这将在调用内核时传给内核代码如下: 串口的初始化函数主要是 serial_init,它设置 UART 控制器,是CPU 相关的函数,在cpuarm92
[单片机]
TQ2440 <font color='red'>学习</font><font color='red'>笔记</font>—— 31、移植U-Boot【U-Boot 的启动过程第二阶段源码分析】
STM32学习笔记(四)---RCC
RCC: Reset Clock Control 复位和时钟控制器 RCC时钟框图—时钟树 系统时钟 对应的是图中黄色部分,下面的数字标号对应上面的红色标号1-6 1.HSE高速外部时钟信号 HSE是高速的外部时钟信号,可由有源晶振或无源晶振提供。 当使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空。 当使用无源晶振时,时钟从OSC_IN和OSC_OUT进入,并且要配谐振电容。 注意:当HSE故障时候,不仅HSE会被关闭,PLL也会被关闭,此时高速的内部时钟信号HSI会作为备用的系统时钟,直到HSE回复正常,HSI=16M。 2.锁相环PLL PLL的主要作用是对时钟进行倍频,然后把时钟输
[单片机]
STM32<font color='red'>学习</font><font color='red'>笔记</font>(四)---RCC
STM8学习笔记(一) 建立第一个工程
按照所学教程(青风电子)建立第一STM8工程,出现如下错误。 出现:Fatal Error : cannot open source file stm8s_gpio.h D:stm8testdriverled.h 16 找不到头文件。 解决:修改头文件路径。原路径为: 原路径为: $PROJ_DIR$..libinc $PROJ_DIR$..libsrc $PROJ_DIR$..user $PROJ_DIR$..\driver 修改为:$PROJ_DIR$..libinc $PROJ_DIR$libsrc $PROJ_DIR$user $PROJ_DIR$driver 因为我将工程文件建立在整个工程文件
[单片机]
STM8<font color='red'>学习</font><font color='red'>笔记</font>(一) 建立第一个工程
学习笔记——FreeRTOS任务的创建(动态方法)
学习了任务的相关知识后,在MDK5中以STM32F407为开发板尝试任务的创建和删除。 任务创建有两种方式分别为动态创建和静态创建,分别通过调用vTaskcreat()和vTaskcreat_static()来创建。其区别是动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。 动态创建任务的原型 其中各个参数:pxTaskCode 任务函数(由用户自己编写的函数,一般为一个无限循环) pcName 任务名(用于追踪和调试,最大长度不超过configMAX_TASK_NAME_LE
[单片机]
<font color='red'>学习</font><font color='red'>笔记</font>——FreeRTOS任务的创建(动态方法)
cortex M3S811学习笔记-GPIO-INT
首先是通用IO口,不管学什么单片机,IO口都是最重要和最好学的。重要是因为他是单片机与处围器件的接口,同样也是我们通常所说的人机接口,好学是因为它的控制容易,无非就是使能端口,设方向,然后就是写数据或是读数据了(根据你设的方向而定),这款超强的arm核的32位的小东西的IO口也有不同之处,毕竟是ARM核,IO的寄存器也丰富了不少。下面就来看看与IO口有关的函数。 1.按顺序来,先使能IO口。只有使能了他才能用,所以当然是第一步了。 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA) 这就是使能A端口函数,即A端口可以用了,他的大门向你敞开了 。 A端口不是在物理特征上有6个脚吗?GPIOA就
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved