久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5052|回復: 2
打印 上一主題 下一主題
收起左側

STM32睡眠和停止喚醒源代碼

[復制鏈接]
跳轉到指定樓層
樓主
單片機的休眠喚醒和停止喚醒實驗代碼示例


單片機源程序如下:
  1. #include "wkup.h"
  2. #include "led.h"
  3. #include "delay.h"
  4. void Sys_Sleepy(void)
  5. {  
  6.   SCB->SCR |=0X00;   

  7.         #if defined ( __CC_ARM   )                          
  8.   __force_stores();
  9.         #endif
  10.   /* Request Wait For Interrupt */
  11.   __WFI();
  12. }
  13. //系統進入待機模式
  14. void Sys_Enter_Sys_Sleepy(void)
  15. {                        
  16. //        RCC_APB2PeriphResetCmd(0X01FC,DISABLE);        //復位所有IO口
  17.         Sys_Sleepy();
  18. }

  19. void EXTI2_IRQHandler(void)
  20. {                                                                                                  
  21.         EXTI_ClearITPendingBit(EXTI_Line2); // 清除LINE10上的中斷標志位        
  22.                   SCB->SCR |=SCB_SCR_SEVONPEND;
  23.           //  Sys_Enter_Sys_Sleepy();
  24.         if(E2==0)//關機?
  25.         {               
  26.                         delay_ms(10000);
  27.                         if(E2==0)
  28.                         {
  29.                                 LED0=0;
  30.                                 Sys_Enter_Sys_Sleepy();
  31.                         }
  32.         } else         LED1=0;

  33.                         
  34. }
  35. void EXTI3_IRQHandler(void)
  36. {                                                                                                  
  37.         EXTI_ClearITPendingBit(EXTI_Line3); // 清除LINE10上的中斷標志位                  
  38.         SCB->SCR |=SCB_SCR_SEVONPEND;
  39.         LED1=!LED1;
  40. /*        if(E3!=0)//關機?
  41.         {               
  42.                 Sys_Enter_Sys_Sleepy();        
  43.         }  else LED0=1;   */
  44. }

  45. //PA0 WKUP喚醒初始化
  46. void WKUP_Init(void)
  47. {        
  48.     GPIO_InitTypeDef  GPIO_InitStructure;                    
  49.         NVIC_InitTypeDef NVIC_InitStructure;
  50.         EXTI_InitTypeDef EXTI_InitStructure;

  51.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA和復用功能時鐘

  52.         GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2;         //PE.2
  53.         GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPU;//上拉輸入  
  54.         GPIO_Init(GPIOE, &GPIO_InitStructure);        //初始化IO

  55.         GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3;         //PE.3
  56.         GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPU;//上拉輸入  
  57.         GPIO_Init(GPIOE, &GPIO_InitStructure);        //初始化IO
  58.         //使用外部中斷方式
  59.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);        //中斷線2連接GPIOE.2
  60.    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource3);
  61.   EXTI_InitStructure.EXTI_Line = EXTI_Line3|EXTI_Line2;        //設置按鍵所有的外部線路
  62.         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;                        //設外外部中斷模式:EXTI線路為中斷請求
  63.         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  //上升沿觸發
  64.          EXTI_InitStructure.EXTI_LineCmd =ENABLE;// DISABLE;
  65.         EXTI_Init(&EXTI_InitStructure);        // 初始化外部中斷

  66.         NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn; //使能按鍵所在的外部中斷通道
  67.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;
  68.         NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;  
  69.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
  70.         NVIC_Init(&NVIC_InitStructure); //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器
  71. /*----------------------------------------*/
  72.   NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能按鍵所在的外部中斷通道
  73.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  74.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  75.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道
  76.         NVIC_Init(&NVIC_InitStructure); //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器

  77. if(E2!=0) Sys_Sleepy();    //不是開機,進入待機模式  
  78. }
復制代碼

所有資料51hei提供下載:
睡眠喚醒和停止喚醒實驗.rar (649.88 KB, 下載次數: 70)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

無效樓層,該帖已經被刪除
板凳
ID:427492 發表于 2019-5-18 17:51 | 只看該作者
樓主,我最近也在做停止喚醒實驗。我是把串口的接收口RXD配置為外部中斷方式,通過給串口發送一個字符來喚醒。現在可以用串口發送字符喚醒,我遇到的問題是“我想把喚醒它的字符顯示出來”,結果沒能實現,我想問一下樓主有解決我問題的方法或思路沒有?
回復

使用道具 舉報

地板
ID:496117 發表于 2021-4-26 10:48 | 只看該作者
最近搞低功耗的也遇到很多問題,一開始打算用待機模式,畢竟最省電,而且喚醒之后是復位重啟,不用重新初始化電源等,省事!但是待機之后喚醒經常需要按很多次才會響應,后面放棄了,改用停止模式!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜欧美一区二区三区在线播放 | 超碰在线亚洲 | 一本一道久久a久久精品蜜桃 | 久久久久久国产一区二区三区 | 欧美精品乱码99久久影院 | 殴美成人在线视频 | 中文字幕在线观看视频一区 | 精品一区二区av | 先锋资源网 | 96国产精品久久久久aⅴ四区 | 日韩成人av在线 | 精品欧美一区二区三区精品久久 | 亚洲高清视频一区二区 | 久久亚洲一区 | 91久久精品一区二区二区 | 午夜电影日韩 | 日韩欧美亚洲 | 国产精品久久欧美久久一区 | 国产成人精品一区二区三区网站观看 | 国产精品国产精品国产专区不卡 | 国产精品成人久久久久 | 98久久| www.婷婷亚洲基地 | 粉嫩av| 久久久在线视频 | 欧美精品乱码99久久影院 | 欧美日韩精品影院 | 国产97碰免费视频 | 国产大片黄色 | 欧美成人精品一区 | 国产高清在线精品 | 性网址| 自拍 亚洲 欧美 老师 丝袜 | 粉嫩粉嫩芽的虎白女18在线视频 | 色婷婷亚洲一区二区三区 | 美女一区 | 91亚洲视频在线 | 国产亚洲精品久久久久久豆腐 | 色综合久久久久 | 精品视频一区二区三区 | 一区二区三区中文字幕 |