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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LPC824低功耗下pin配置調試程序

[復制鏈接]
跳轉到指定樓層
樓主
LPC824有顆M0的芯

雖然有些許瑕疵

低功耗做的不錯

Power-down模式下很輕松做到幾個uA

麻煩地方在于需要仔細調整每個IO管腳的設置

附件給出了所有可配置管腳的列表

通過對pinEnergySavingTable中每個管腳的設置

來調試最終功耗

需從NXP官網下載LPC824庫文件chip_8xx及chip_common來支持

單片機源程序如下:
  1. #include "includes.h"
  2. #include "energy.h"

  3. enum {
  4.         INPUT = 0,
  5.         OUTPUT = 1,
  6. };

  7. enum {
  8.         LOW = 0,
  9.         HIGH = 1,
  10. };

  11. const struct struPinEnergySavingTable pinEnergySavingTable[] = {
  12.         {
  13.                 .pin = 0,
  14.                 .iocon = IOCON_PIO0,
  15.                 .dir = 1,
  16.                 .level = 0,
  17.         },
  18.         {
  19.                 .pin = 1,
  20.                 .iocon = IOCON_PIO1,
  21.                 .dir = 1,
  22.                 .level = 0,
  23.         },
  24.         {
  25.                 .pin = 2,
  26.                 .iocon = IOCON_PIO2,
  27.                 .dir = 0,
  28.         },                                                                                                //        SWM_FIXED_SWDIO
  29.         {
  30.                 .pin = 3,
  31.                 .iocon = IOCON_PIO3,
  32.                 .dir = 0,
  33.         },                                                                                                //        SWM_FIXED_SWCLK
  34.         {
  35.                 .pin = 4,
  36.                 .iocon = IOCON_PIO4,
  37.                 .dir = 1,
  38.                 .level = 0,
  39.         },
  40.         {
  41.                 .pin = 5,
  42.                 .iocon = IOCON_PIO5,
  43.                 .dir = 0,
  44.         },                                                                                                //        RESET
  45.         {
  46.                 .pin = 6,
  47.                 .iocon = IOCON_PIO6,
  48.                 .dir = 1,
  49.                 .level = 0,
  50.         },
  51.         {
  52.                 .pin = 7,
  53.                 .iocon = IOCON_PIO7,
  54.                 .dir = 0,
  55.         },                                                                                                //        SWM_FIXED_ADC0
  56.         {
  57.                 .pin = 8,
  58.                 .iocon = IOCON_PIO8,
  59.                 .dir = 1,
  60.                 .level = 0,
  61.         },
  62.         {
  63.                 .pin = 9,
  64.                 .iocon = IOCON_PIO9,
  65.                 .dir = 1,
  66.                 .level = 0,
  67.         },
  68.         {
  69.                 .pin = 10,
  70.                 .iocon = IOCON_PIO10,
  71.                 .dir = 1,
  72.                 .level = 0,
  73.         },
  74.         {
  75.                 .pin = 11,
  76.                 .iocon = IOCON_PIO11,
  77.                 .dir = 1,
  78.                 .level = 0,
  79.         },
  80.         {
  81.                 .pin = 12,
  82.                 .iocon = IOCON_PIO12,
  83.                 .dir = 1,
  84.                 .level = 0,
  85.         },
  86.         {
  87.                 .pin = 13,
  88.                 .iocon = IOCON_PIO13,
  89.                 .dir = 1,
  90.                 .level = 0,
  91.         },
  92.         {
  93.                 .pin = 14,
  94.                 .iocon = IOCON_PIO14,
  95.                 .dir = 1,
  96.                 .level = 0,
  97.         },
  98.         {
  99.                 .pin = 15,
  100.                 .iocon = IOCON_PIO15,
  101.                 .dir = 0,
  102.         },
  103.         {
  104.                 .pin = 16,
  105.                 .iocon = IOCON_PIO16,
  106.                 .dir = 1,
  107.                 .level = 1,
  108.         },
  109.         {
  110.                 .pin = 17,
  111.                 .iocon = IOCON_PIO17,
  112.                 .dir = 1,
  113.                 .level = 0,
  114.         },
  115.         {
  116.                 .pin = 18,
  117.                 .iocon = IOCON_PIO18,
  118.                 .dir = 1,
  119.                 .level = 0,
  120.         },
  121.         {
  122.                 .pin = 19,
  123.                 .iocon = IOCON_PIO19,
  124.                 .dir = 1,
  125.                 .level = 0,
  126.         },
  127.         {
  128.                 .pin = 20,
  129.                 .iocon = IOCON_PIO20,
  130.                 .dir = 1,
  131.                 .level = 0,
  132.         },
  133.         {
  134.                 .pin = 21,
  135.                 .iocon = IOCON_PIO21,
  136.                 .dir = 1,
  137.                 .level = 0,
  138.         },
  139.         {
  140.                 .pin = 22,
  141.                 .iocon = IOCON_PIO22,
  142.                 .dir = 1,
  143.                 .level = 0,
  144.         },
  145.         {
  146.                 .pin = 23,
  147.                 .iocon = IOCON_PIO23,
  148.                 .dir = 0,
  149.         },
  150.         {
  151.                 .pin = 24,
  152.                 .iocon = IOCON_PIO24,
  153.                 .dir = 0,
  154.         },
  155.         {
  156.                 .pin = 25,
  157.                 .iocon = IOCON_PIO25,
  158.                 .dir = 1,
  159.                 .level = 0,
  160.         },
  161.         {
  162.                 .pin = 26,
  163.                 .iocon = IOCON_PIO26,
  164.                 .dir = 1,
  165.                 .level = 0,
  166.         },
  167.         {
  168.                 .pin = 27,
  169.                 .iocon = IOCON_PIO27,
  170.                 .dir = 1,
  171.                 .level = 1,
  172.         },
  173.         {
  174.                 .pin = 28,
  175.                 .iocon = IOCON_PIO28,
  176.                 .dir = 1,
  177.                 .level = 0,
  178.         },
  179. };

  180. #define PIN_ENERGY_SAVING_NUM                                                        (sizeof(pinEnergySavingTable) / sizeof(struct struPinEnergySavingTable))

  181. static inline void PinEnergySaving(const struct struPinEnergySavingTable *saving)
  182. {
  183.         Chip_IOCON_PinSetMode(LPC_IOCON, saving->iocon, PIN_MODE_INACTIVE);
  184.         if (saving->dir) {
  185.                 Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 0, saving->pin);
  186.                 if (saving->level) {
  187.                         Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 0, saving->pin);
  188.                 } else {
  189.                         Chip_GPIO_SetPinOutLow(LPC_GPIO_PORT, 0, saving->pin);
  190.                 }
  191.         } else {
  192.                 Chip_GPIO_SetPinDIRInput(LPC_GPIO_PORT, 0, saving->pin);
  193.         }
  194. }

  195. void EnergyPeripheral(void)
  196. {
  197.         int i;
  198.        
  199.         for (i = 0; i < 9; i++) {
  200.                 LPC_SWM->PINASSIGN[i] = 0xFFFFFFFF;
  201.         }
  202.         LPC_SWM->PINENABLE0 |= (1 << (SWM_FIXED_ADC11 + 1)) - 1;
  203.        
  204.         for (i = 0; i < PIN_ENERGY_SAVING_NUM; i++) {
  205.                 PinEnergySaving(&pinEnergySavingTable[i]);
  206.         }
  207. }

  208. void PowerDownMode(void)
  209. {
  210.         //        6.7.6.2 Programming Power-down mode
  211.                        
  212.         //        Select the power configuration in Power-down mode in the PDSLEEPCFG
  213.         Chip_SYSCTL_SetDeepSleepPD(SYSCTL_DEEPSLP_BOD_PD | SYSCTL_DEEPSLP_WDTOSC_PD);       
  214.         //        Select the power configuration after wake-up in the PDAWAKECFG
  215.         Chip_SYSCTL_SetWakeup(
  216.                                 SYSCTL_SLPWAKE_BOD_PD |
  217.                                 SYSCTL_SLPWAKE_ADC_PD |
  218.                                 SYSCTL_SLPWAKE_SYSOSC_PD |
  219.                                 SYSCTL_SLPWAKE_SYSPLL_PD |
  220.                                 SYSCTL_SLPWAKE_ACMP_PD);
  221.         LPC_SYSCTL->PDRUNCFG = LPC_SYSCTL->PDAWAKECFG;
  222.         //        If any of the available wake-up interrupts are used for wake-up, enable the interrupts in the interrupt wake-up registers
  223.         Chip_SYSCTL_EnablePINTWakeup(0);
  224.         Chip_SYSCTL_EnablePINTWakeup(1);
  225. ……………………

  226. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
energy.rar (1.52 KB, 下載次數: 8)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品国产一区二区三区 | 日本激情视频中文字幕 | 永久www成人看片 | 亚洲一区二区三区四区五区中文 | 一区二区三区四区不卡视频 | 国产一区二区三区四区 | 亚洲精品九九 | 国产一区二区电影网 | 国产精品一区久久久 | 久久在线精品 | 欧美精品成人一区二区三区四区 | 国产中文 | 久久精品免费一区二区三 | 韩日精品在线观看 | 四虎影院新地址 | 天天亚洲 | 91视频在线 | 蜜桃视频一区二区三区 | 国产福利在线播放 | 久久精品国产亚洲夜色av网站 | 午夜婷婷激情 | 久久久久国产成人精品亚洲午夜 | yiren22 亚洲综合 | 久久久av | 成人小视频在线观看 | 中文字幕一区二区三区在线乱码 | 国产在线视频一区 | a级网站 | 久久国产一区二区三区 | 日韩视频一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 国产午夜精品视频 | 亚洲国产精品视频一区 | 欧美一级毛片免费观看 | 黄色一级大片视频 | 日韩国产中文字幕 | 999久久 | 免费视频久久 | 欧美 日韩精品 | 国产精品成人久久久久 | 欧美日韩精品在线免费观看 |