Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of PowerControl by
PowerControl.h
00001 /* mbed PowerControl Library 00002 * Copyright (c) 2010 Michael Wei 00003 */ 00004 00005 #ifndef MBED_POWERCONTROL_H 00006 #define MBED_POWERCONTROL_H 00007 00008 //System Control Register 00009 // bit 0: Reserved 00010 // bit 1: Sleep on Exit 00011 #define LPC1768_SCR_SLEEPONEXIT 0x2 00012 // bit 2: Deep Sleep 00013 #define LPC1768_SCR_SLEEPDEEP 0x4 00014 // bit 3: Resereved 00015 // bit 4: Send on Pending 00016 #define LPC1768_SCR_SEVONPEND 0x10 00017 // bit 5-31: Reserved 00018 00019 //Power Control Register 00020 // bit 0: Power mode control bit 0 (power-down mode) 00021 #define LPC1768_PCON_PM0 0x1 00022 // bit 1: Power mode control bit 1 (deep power-down mode) 00023 #define LPC1768_PCON_PM1 0x2 00024 // bit 2: Brown-out reduced power mode 00025 #define LPC1768_PCON_BODRPM 0x4 00026 // bit 3: Brown-out global disable 00027 #define LPC1768_PCON_BOGD 0x8 00028 // bit 4: Brown-out reset disable 00029 #define LPC1768_PCON_BORD 0x10 00030 // bit 5-7 : Reserved 00031 // bit 8: Sleep Mode Entry Flag 00032 #define LPC1768_PCON_SMFLAG 0x100 00033 // bit 9: Deep Sleep Entry Flag 00034 #define LPC1768_PCON_DSFLAG 0x200 00035 // bit 10: Power Down Entry Flag 00036 #define LPC1768_PCON_PDFLAG 0x400 00037 // bit 11: Deep Power Down Entry Flag 00038 #define LPC1768_PCON_DPDFLAG 0x800 00039 // bit 12-31: Reserved 00040 00041 //"Sleep Mode" (WFI). 00042 inline void Sleep(void) 00043 { 00044 __WFI(); 00045 } 00046 00047 //"Deep Sleep" Mode 00048 inline void DeepSleep(void) 00049 { 00050 SCB->SCR |= LPC1768_SCR_SLEEPDEEP; 00051 __WFI(); 00052 } 00053 00054 //"Power-Down" Mode 00055 inline void PowerDown(void) 00056 { 00057 SCB->SCR |= LPC1768_SCR_SLEEPDEEP; 00058 LPC_SC->PCON &= ~LPC1768_PCON_PM1; 00059 LPC_SC->PCON |= LPC1768_PCON_PM0; 00060 __WFI(); 00061 //reset back to normal 00062 LPC_SC->PCON &= ~(LPC1768_PCON_PM1 | LPC1768_PCON_PM0); 00063 } 00064 00065 //"Deep Power-Down" Mode 00066 inline void DeepPowerDown(void) 00067 { 00068 SCB->SCR |= LPC1768_SCR_SLEEPDEEP; 00069 LPC_SC->PCON |= LPC1768_PCON_PM1 | LPC1768_PCON_PM0; 00070 __WFI(); 00071 //reset back to normal 00072 LPC_SC->PCON &= ~(LPC1768_PCON_PM1 | LPC1768_PCON_PM0); 00073 } 00074 00075 //shut down BOD during power-down/deep sleep 00076 inline void BrownOut_ReducedPowerMode_Enable(void) 00077 { 00078 LPC_SC->PCON |= LPC1768_PCON_BODRPM; 00079 } 00080 00081 //turn on BOD during power-down/deep sleep 00082 inline void BrownOut_ReducedPowerMode_Disable(void) 00083 { 00084 LPC_SC->PCON &= ~LPC1768_PCON_BODRPM; 00085 } 00086 00087 //turn off brown out circutry 00088 inline void BrownOut_Global_Disable(void) 00089 { 00090 LPC_SC->PCON |= LPC1768_PCON_BOGD; 00091 } 00092 00093 //turn on brown out circutry 00094 inline void BrownOut_Global_Enable(void) 00095 { 00096 LPC_SC->PCON &= !LPC1768_PCON_BOGD; 00097 } 00098 00099 //turn off brown out reset circutry 00100 inline void BrownOut_Reset_Disable(void) 00101 { 00102 LPC_SC->PCON |= LPC1768_PCON_BORD; 00103 } 00104 00105 //turn on brown outreset circutry 00106 inline void BrownOut_Reset_Enable(void) 00107 { 00108 LPC_SC->PCON &= ~LPC1768_PCON_BORD; 00109 } 00110 //Peripheral Control Register 00111 // bit 0: Reserved 00112 // bit 1: PCTIM0: Timer/Counter 0 power/clock enable 00113 #define LPC1768_PCONP_PCTIM0 0x2 00114 // bit 2: PCTIM1: Timer/Counter 1 power/clock enable 00115 #define LPC1768_PCONP_PCTIM1 0x4 00116 // bit 3: PCUART0: UART 0 power/clock enable 00117 #define LPC1768_PCONP_PCUART0 0x8 00118 // bit 4: PCUART1: UART 1 power/clock enable 00119 #define LPC1768_PCONP_PCUART1 0x10 00120 // bit 5: Reserved 00121 // bit 6: PCPWM1: PWM 1 power/clock enable 00122 #define LPC1768_PCONP_PCPWM1 0x40 00123 // bit 7: PCI2C0: I2C interface 0 power/clock enable 00124 #define LPC1768_PCONP_PCI2C0 0x80 00125 // bit 8: PCSPI: SPI interface power/clock enable 00126 #define LPC1768_PCONP_PCSPI 0x100 00127 // bit 9: PCRTC: RTC power/clock enable 00128 #define LPC1768_PCONP_PCRTC 0x200 00129 // bit 10: PCSSP1: SSP interface 1 power/clock enable 00130 #define LPC1768_PCONP_PCSSP1 0x400 00131 // bit 11: Reserved 00132 // bit 12: PCADC: A/D converter power/clock enable 00133 #define LPC1768_PCONP_PCADC 0x1000 00134 // bit 13: PCCAN1: CAN controller 1 power/clock enable 00135 #define LPC1768_PCONP_PCCAN1 0x2000 00136 // bit 14: PCCAN2: CAN controller 2 power/clock enable 00137 #define LPC1768_PCONP_PCCAN2 0x4000 00138 // bit 15: PCGPIO: GPIOs power/clock enable 00139 #define LPC1768_PCONP_PCGPIO 0x8000 00140 // bit 16: PCRIT: Repetitive interrupt timer power/clock enable 00141 #define LPC1768_PCONP_PCRIT 0x10000 00142 // bit 17: PCMCPWM: Motor control PWM power/clock enable 00143 #define LPC1768_PCONP_PCMCPWM 0x20000 00144 // bit 18: PCQEI: Quadrature encoder interface power/clock enable 00145 #define LPC1768_PCONP_PCQEI 0x40000 00146 // bit 19: PCI2C1: I2C interface 1 power/clock enable 00147 #define LPC1768_PCONP_PCI2C1 0x80000 00148 // bit 20: Reserved 00149 // bit 21: PCSSP0: SSP interface 0 power/clock enable 00150 #define LPC1768_PCONP_PCSSP0 0x200000 00151 // bit 22: PCTIM2: Timer 2 power/clock enable 00152 #define LPC1768_PCONP_PCTIM2 0x400000 00153 // bit 23: PCTIM3: Timer 3 power/clock enable 00154 #define LPC1768_PCONP_PCQTIM3 0x800000 00155 // bit 24: PCUART2: UART 2 power/clock enable 00156 #define LPC1768_PCONP_PCUART2 0x1000000 00157 // bit 25: PCUART3: UART 3 power/clock enable 00158 #define LPC1768_PCONP_PCUART3 0x2000000 00159 // bit 26: PCI2C2: I2C interface 2 power/clock enable 00160 #define LPC1768_PCONP_PCI2C2 0x4000000 00161 // bit 27: PCI2S: I2S interface power/clock enable 00162 #define LPC1768_PCONP_PCI2S 0x8000000 00163 // bit 28: Reserved 00164 // bit 29: PCGPDMA: GP DMA function power/clock enable 00165 #define LPC1768_PCONP_PCGPDMA 0x20000000 00166 // bit 30: PCENET: Ethernet block power/clock enable 00167 #define LPC1768_PCONP_PCENET 0x40000000 00168 // bit 31: PCUSB: USB interface power/clock enable 00169 #define LPC1768_PCONP_PCUSB 0x80000000 00170 00171 //Powers Up specified Peripheral(s) 00172 inline unsigned int Peripheral_PowerUp(unsigned int bitMask) 00173 { 00174 return LPC_SC->PCONP |= bitMask; 00175 } 00176 00177 //Powers Down specified Peripheral(s) 00178 inline unsigned int Peripheral_PowerDown(unsigned int bitMask) 00179 { 00180 return LPC_SC->PCONP &= ~bitMask; 00181 } 00182 00183 //returns if the peripheral is on or off 00184 inline bool Peripheral_GetStatus(unsigned int peripheral) 00185 { 00186 return (LPC_SC->PCONP & peripheral) ? true : false; 00187 } 00188 00189 #endif
Generated on Sat Aug 6 2022 08:21:56 by
 1.7.2 
    