標(biāo)題:
LPC824低功耗下pin配置調(diào)試程序
[打印本頁]
作者:
pauljoe
時(shí)間:
2019-3-19 10:09
標(biāo)題:
LPC824低功耗下pin配置調(diào)試程序
LPC824有顆M0的芯
雖然有些許瑕疵
低功耗做的不錯(cuò)
Power-down模式下很輕松做到幾個(gè)uA
麻煩地方在于需要仔細(xì)調(diào)整每個(gè)IO管腳的設(shè)置
附件給出了所有可配置管腳的列表
通過對pinEnergySavingTable中每個(gè)管腳的設(shè)置
來調(diào)試最終功耗
需從NXP官網(wǎng)下載LPC824庫文件chip_8xx及chip_common來支持
單片機(jī)源程序如下:
#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黑下載附件…………
復(fù)制代碼
0.png
(3.57 KB, 下載次數(shù): 63)
下載附件
2019-3-19 16:15 上傳
所有資料51hei提供下載:
energy.rar
(1.52 KB, 下載次數(shù): 8)
2019-3-19 10:03 上傳
點(diǎn)擊文件名下載附件
LPC824低功耗下管腳調(diào)試設(shè)置
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1