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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

APT32F1023單片機RTC待機超低功耗電流3.5uA源代碼分享

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:6391 發(fā)表于 2023-6-26 05:12 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
APT32F1023H8S6(SSOP-24封裝)MCU是由愛普特微電子推出的基于平頭哥半導體RISC-V內(nèi)核開發(fā)的32位高性能、低成本單片機,最近有個項目需要用到其超低功耗待機和RTC中斷喚醒功能(實測功耗3.5uA,帶LDO后功耗5.6uA),現(xiàn)把源代碼和原理圖分享給大家,方便大家學習、使用!

電路原理圖如下:


單片機源程序如下:
  1. /*******************************************************************************
  2. 文件名: 真空泵控制板(超低功耗,9V集成電池待機3個月后喚醒)主控程序
  3. 編  寫: 李工/Michael Lee
  4. 單  位: 領岸
  5. 時  間: 2023年06月17日
  6. 修  改:
  7. 版  本: V1.0
  8. 備  注:
  9.         1.時鐘選擇MCU內(nèi)部5MHz IMOSC振蕩器;
  10.             2.接口說明:
  11.                    APT32F1023B-24PIN            -----                  外部設備
  12.                   *******************         LED指示燈           ******************
  13.                              PB0.3                  -----                    LED
  14.               *******************          真空泵             ******************
  15.                          PA0.0                  -----                 DC直流電機
  16.                 3.MCU上電后使用默認IMOSC時鐘完成軟硬件初始化設置,初始化完畢后系統(tǒng)仍選擇
  17.                   此時鐘作為主時鐘(5分頻),以降低功耗(實測電流500uA左右);
  18.                 4.由于MCU選擇內(nèi)部IMOSC作為主時鐘,下載仿真器注意要設置ICE Clock<1000KHz;
  19.                 5.MCU上電后(自鎖按鍵開關),先啟動真空泵(DC直流電機)工作10秒鐘,再初
  20.                   始化RTC并低功耗運行,然后MCU進入深度休眠模式,RTC每隔3個月(測試時間設
  21.                   為3小時)喚醒一次MCU,并啟動真空泵工作10秒鐘后再次進入深度休眠模式,以
  22.                   此循環(huán),直至電池供電耗盡(實測RTC運行時整機待機功耗5.6uA,其中MCU待機功
  23.                   耗3.5uA左右,穩(wěn)壓LDO為HT7550-3,SOT-89封裝,LDO空載功耗0.87uA);
  24.                 6.免費申請APT32系列單片機/MCU下載仿真器、學習板及FAE技術支持、軟硬件
  25.                   開發(fā)咨詢等請聯(lián)系:18823326651(李工,微信同號)、274915968@qq.com
  26. *******************************************************************************/
  27. //加載頭文件
  28. #include "sys_clk.h"
  29. #include "iostring.h"
  30. #include "csp.h"
  31. #include "pm.h"
  32. #include "rtc.h"
  33. #include <string.h>
  34. #include <drv/gpio.h>
  35. #include <drv/pin.h>
  36. #include "low_power.h"                          //加載MCU低功耗設置等操作頭文件
  37. #include "rtc_time.h"                           //加載RTC初始化等操作頭文件

  38. //宏定義
  39. /*** 變量類型 ***/
  40. #define uchar unsigned char
  41. #define uint unsigned int
  42. #define ushort unsigned short
  43. #define ulong unsigned long
  44. /*** LED指示燈 ***/
  45. #define LED_ON csi_pin_set_high(PB03)           //點亮LED指示燈(PB03端口輸出高電平)
  46. #define LED_OFF csi_pin_set_low(PB03)           //熄滅LED指示燈(PB03端口輸出低電平)
  47. /*** 直流電機真空泵 ***/
  48. #define Pump_ON csi_pin_set_high(PA00)          //開啟真空泵(PA00端口輸出高電平)
  49. #define Pump_OFF csi_pin_set_low(PA00)          //關閉真空泵(PA00端口輸出低電平)

  50. //外部函數(shù)
  51. /*** 系統(tǒng)啟動 ***/
  52. extern void system_init(void);
  53. extern void board_init(void);

  54. //主函數(shù)標志位
  55. uchar Pump_First_Start = 0;                     //定義、保存上電真空泵首次啟動標志位

  56. //主函數(shù)變量
  57. uint Wake_Up_Times = 0;                         //定義、保存MCU低功耗喚醒次數(shù)

  58. //外部變量

  59.                            /********** GPIO口初始化操作 ***********/
  60. /*******************************************************************************
  61. 函數(shù)名: GPIO_Init()
  62. 功  能: GPIO口初始化
  63. 參  數(shù): 無
  64. 返回值: 無
  65. *******************************************************************************/
  66. void GPIO_Init(void)
  67. {
  68.         //LED指示燈
  69.         csi_pin_set_mux(PB03,PB03_OUTPUT);                //配置PB0.3端口為輸出模式
  70.         csi_pin_output_mode(PB03, GPIO_PUSH_PULL);        //推挽輸出
  71.         //直流電機真空泵
  72.         csi_pin_set_mux(PA00,PA00_OUTPUT);                //配置PA0.0端口為輸出模式
  73.         csi_pin_output_mode(PA00, GPIO_PUSH_PULL);        //推挽輸出
  74.         //主頻CLO輸出
  75. //        csi_pin_set_mux(PA02, PA02_CLO);            //設置主頻輸出引腳為PA0.2腳
  76. //  csi_clo_config(CLO_SYSCLK, CLO_DIV8);       //CLO分頻系數(shù)為8,輸出頻率=主頻48MHz/8=6MHz
  77. }

  78.                                          /********** 其他操作函數(shù) ***********/
  79. /*******************************************************************************
  80. 函數(shù)名: Pump_Run()
  81. 功  能: 直流電機真空泵啟動10秒左右,并且LED閃爍提示
  82. 參  數(shù): 無
  83. 返回值: 無
  84. *******************************************************************************/
  85. void Pump_Run(void)
  86. {
  87.         uint i;                                     //定義臨時變量,方便后續(xù)程序使用
  88.     Pump_ON;                                    //啟動直流電機真空泵
  89.         for(i=0;i<18;i++)                           //LED指示燈閃爍,并循環(huán)延時10秒
  90.         {
  91.                 LED_ON;                                 //點亮LED指示燈
  92.                 mdelay(300);                            //延時
  93.                 LED_OFF;                                //熄滅LED指示燈
  94.                 mdelay(300);                            //延時
  95.         }
  96.         Pump_OFF;                                   //關閉直流電機真空泵
  97. }

  98. //主函數(shù)
  99. int main()
  100. {
  101.         //系統(tǒng)、GPIO口等初始化
  102.         system_init();                              //系統(tǒng)時鐘、TICK等配置(系統(tǒng)時鐘5MHz 5分頻)
  103. //        board_init();                               //UART2硬件串口等配置(系統(tǒng)打印參數(shù)用)
  104.         GPIO_Init();                                //GPIO口初始化
  105.         RTC_Init();                                 //RTC時鐘初始化
  106.         Low_Power_Set();                            //MCU低功耗設置
  107.        
  108.         //主循環(huán)
  109.         while(1)
  110.         {
  111.                 //真空泵首次上電,啟動10秒左右,并且LED閃爍提示(MCU被喚醒后也從此處開始執(zhí)行程序)
  112.                 if(Pump_First_Start==0)
  113.                 {
  114.                         Pump_Run();                         //真空泵運行
  115.                         Pump_First_Start = 1;               //上電真空泵首次啟動標志位置1
  116.                 }
  117.                 //MCU深度休眠被RTC中斷喚醒,判斷延時時間到后,真空泵啟動10秒左右,并且LED閃爍提示
  118.                 else
  119.                 {
  120.                         Wake_Up_Times++;                    //RTC中斷喚醒計時次數(shù)+1
  121.                         if(Wake_Up_Times>5)                 //延時時間達到:5*1min=5min
  122.                         {
  123.                                 Wake_Up_Times = 0;              //清零RTC中斷喚醒計時次數(shù)
  124.                                 Pump_Run();                     //真空泵運行
  125.                         }
  126.                 }
  127.                 //MCU進入深度睡眠狀態(tài)
  128.                 csi_pm_enter_sleep(PM_MODE_DEEPSLEEP);  //MCU選擇進入深度睡眠運行狀態(tài)
  129.         }
  130.        
  131.     return 0;
  132. }
復制代碼

APT32F1023 RTC待機整體功耗5.6uA(帶LDO穩(wěn)壓IC).jpg (4.54 MB, 下載次數(shù): 108)

APT32F1023 RTC待機整體功耗5.6uA(帶LDO穩(wěn)壓IC).jpg

APT32F1023 RTC待機功耗3.5uA.jpg (720.82 KB, 下載次數(shù): 104)

APT32F1023 RTC待機功耗3.5uA.jpg

APT32F1023單片機RTC待機超低功耗電流3.5uA源代碼分享.7z

2.29 MB, 下載次數(shù): 12, 下載積分: 黑幣 -5

代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区国产精品 | 午夜影院视频在线观看 | 亚洲精品久久久久久久久久久久久 | 国产一区二区三区四区五区加勒比 | 视频在线一区二区 | 91免费高清视频 | cao视频| 视频一二三区 | 欧美成年人 | 久久精品视频网站 | 成人精品网 | 欧美日一区二区 | 欧美日韩成人在线 | 国产超碰人人爽人人做人人爱 | 精品久久亚洲 | 欧美三级在线 | 亚洲精品在线观看视频 | 成人欧美一区二区三区在线播放 | 狠狠干影院 | 久久人人国产 | 在线观看精品视频网站 | 久久久噜噜噜www成人网 | 99精品国产一区二区三区 | 精品欧美乱码久久久久久 | 国产一区二区三区四区区 | 国产美女视频黄a视频免费 国产精品福利视频 | 欧美美女爱爱 | 欧美天堂在线 | 久久久久久久国产 | 精品一区二区三区中文字幕 | 97av视频在线观看 | 日本三级电影在线看 | 激情福利视频 | 国产成人网 | a级片在线观看 | 免费国产视频在线观看 | 日韩一区二区视频 | 国产免费福利小视频 | 国产成人av电影 | 人人玩人人添人人澡欧美 | 成人欧美日韩一区二区三区 |