LPC824有顆M0的芯
雖然有些許瑕疵
低功耗做的不錯
Power-down模式下很輕松做到幾個uA
麻煩地方在于需要仔細調整每個IO管腳的設置
附件給出了所有可配置管腳的列表
通過對pinEnergySavingTable中每個管腳的設置
來調試最終功耗
需從NXP官網下載LPC824庫文件chip_8xx及chip_common來支持
單片機源程序如下:
- #include "includes.h"
- #include "energy.h"
- enum {
- INPUT = 0,
- OUTPUT = 1,
- };
- enum {
- LOW = 0,
- HIGH = 1,
- };
- const struct struPinEnergySavingTable pinEnergySavingTable[] = {
- {
- .pin = 0,
- .iocon = IOCON_PIO0,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 1,
- .iocon = IOCON_PIO1,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 2,
- .iocon = IOCON_PIO2,
- .dir = 0,
- }, // SWM_FIXED_SWDIO
- {
- .pin = 3,
- .iocon = IOCON_PIO3,
- .dir = 0,
- }, // SWM_FIXED_SWCLK
- {
- .pin = 4,
- .iocon = IOCON_PIO4,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 5,
- .iocon = IOCON_PIO5,
- .dir = 0,
- }, // RESET
- {
- .pin = 6,
- .iocon = IOCON_PIO6,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 7,
- .iocon = IOCON_PIO7,
- .dir = 0,
- }, // SWM_FIXED_ADC0
- {
- .pin = 8,
- .iocon = IOCON_PIO8,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 9,
- .iocon = IOCON_PIO9,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 10,
- .iocon = IOCON_PIO10,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 11,
- .iocon = IOCON_PIO11,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 12,
- .iocon = IOCON_PIO12,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 13,
- .iocon = IOCON_PIO13,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 14,
- .iocon = IOCON_PIO14,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 15,
- .iocon = IOCON_PIO15,
- .dir = 0,
- },
- {
- .pin = 16,
- .iocon = IOCON_PIO16,
- .dir = 1,
- .level = 1,
- },
- {
- .pin = 17,
- .iocon = IOCON_PIO17,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 18,
- .iocon = IOCON_PIO18,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 19,
- .iocon = IOCON_PIO19,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 20,
- .iocon = IOCON_PIO20,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 21,
- .iocon = IOCON_PIO21,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 22,
- .iocon = IOCON_PIO22,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 23,
- .iocon = IOCON_PIO23,
- .dir = 0,
- },
- {
- .pin = 24,
- .iocon = IOCON_PIO24,
- .dir = 0,
- },
- {
- .pin = 25,
- .iocon = IOCON_PIO25,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 26,
- .iocon = IOCON_PIO26,
- .dir = 1,
- .level = 0,
- },
- {
- .pin = 27,
- .iocon = IOCON_PIO27,
- .dir = 1,
- .level = 1,
- },
- {
- .pin = 28,
- .iocon = IOCON_PIO28,
- .dir = 1,
- .level = 0,
- },
- };
- #define PIN_ENERGY_SAVING_NUM (sizeof(pinEnergySavingTable) / sizeof(struct struPinEnergySavingTable))
- static inline void PinEnergySaving(const struct struPinEnergySavingTable *saving)
- {
- Chip_IOCON_PinSetMode(LPC_IOCON, saving->iocon, PIN_MODE_INACTIVE);
- if (saving->dir) {
- Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, 0, saving->pin);
- if (saving->level) {
- Chip_GPIO_SetPinOutHigh(LPC_GPIO_PORT, 0, saving->pin);
- } else {
- Chip_GPIO_SetPinOutLow(LPC_GPIO_PORT, 0, saving->pin);
- }
- } else {
- Chip_GPIO_SetPinDIRInput(LPC_GPIO_PORT, 0, saving->pin);
- }
- }
- void EnergyPeripheral(void)
- {
- int i;
-
- for (i = 0; i < 9; i++) {
- LPC_SWM->PINASSIGN[i] = 0xFFFFFFFF;
- }
- LPC_SWM->PINENABLE0 |= (1 << (SWM_FIXED_ADC11 + 1)) - 1;
-
- for (i = 0; i < PIN_ENERGY_SAVING_NUM; i++) {
- PinEnergySaving(&pinEnergySavingTable[i]);
- }
- }
- void PowerDownMode(void)
- {
- // 6.7.6.2 Programming Power-down mode
-
- // Select the power configuration in Power-down mode in the PDSLEEPCFG
- Chip_SYSCTL_SetDeepSleepPD(SYSCTL_DEEPSLP_BOD_PD | SYSCTL_DEEPSLP_WDTOSC_PD);
- // Select the power configuration after wake-up in the PDAWAKECFG
- Chip_SYSCTL_SetWakeup(
- SYSCTL_SLPWAKE_BOD_PD |
- SYSCTL_SLPWAKE_ADC_PD |
- SYSCTL_SLPWAKE_SYSOSC_PD |
- SYSCTL_SLPWAKE_SYSPLL_PD |
- SYSCTL_SLPWAKE_ACMP_PD);
- LPC_SYSCTL->PDRUNCFG = LPC_SYSCTL->PDAWAKECFG;
- // If any of the available wake-up interrupts are used for wake-up, enable the interrupts in the interrupt wake-up registers
- Chip_SYSCTL_EnablePINTWakeup(0);
- Chip_SYSCTL_EnablePINTWakeup(1);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (3.57 KB, 下載次數: 63)
下載附件
2019-3-19 16:15 上傳
所有資料51hei提供下載:
energy.rar
(1.52 KB, 下載次數: 8)
2019-3-19 10:03 上傳
點擊文件名下載附件
LPC824低功耗下管腳調試設置 下載積分: 黑幣 -5
|