×
嵌入式 > 技术百科 > 详情

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

发布时间:2020-06-20 发布时间:
|
官方给的例程当中,使用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模式和工作模式交替进行。

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
无人机新突破:或将利用手机发射塔追踪无人机