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