uc-sdk
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
lpc17xx_clkpwr.c
Go to the documentation of this file.
1 /***********************************************************************/
21 /* Peripheral group ----------------------------------------------------------- */
26 /* Includes ------------------------------------------------------------------- */
27 #include "lpc17xx_clkpwr.h"
28 
29 
30 /* Public Functions ----------------------------------------------------------- */
35 /*********************************************************************/
74 void CLKPWR_SetPCLKDiv (uint32_t ClkType, uint32_t DivVal)
75 {
76  uint32_t bitpos;
77 
78  bitpos = (ClkType < 32) ? (ClkType) : (ClkType - 32);
79 
80  /* PCLKSEL0 selected */
81  if (ClkType < 32)
82  {
83  /* Clear two bit at bit position */
84  LPC_SC->PCLKSEL0 &= (~(CLKPWR_PCLKSEL_BITMASK(bitpos)));
85 
86  /* Set two selected bit */
87  LPC_SC->PCLKSEL0 |= (CLKPWR_PCLKSEL_SET(bitpos, DivVal));
88  }
89  /* PCLKSEL1 selected */
90  else
91  {
92  /* Clear two bit at bit position */
93  LPC_SC->PCLKSEL1 &= ~(CLKPWR_PCLKSEL_BITMASK(bitpos));
94 
95  /* Set two selected bit */
96  LPC_SC->PCLKSEL1 |= (CLKPWR_PCLKSEL_SET(bitpos, DivVal));
97  }
98 }
99 
100 
101 /*********************************************************************/
135 uint32_t CLKPWR_GetPCLKSEL (uint32_t ClkType)
136 {
137  uint32_t bitpos, retval;
138 
139  if (ClkType < 32)
140  {
141  bitpos = ClkType;
142  retval = LPC_SC->PCLKSEL0;
143  }
144  else
145  {
146  bitpos = ClkType - 32;
147  retval = LPC_SC->PCLKSEL1;
148  }
149 
150  retval = CLKPWR_PCLKSEL_GET(bitpos, retval);
151  return retval;
152 }
153 
154 
155 
156 /*********************************************************************/
190 uint32_t CLKPWR_GetPCLK (uint32_t ClkType)
191 {
192  uint32_t retval, div;
193 
194  retval = SystemCoreClock;
195  div = CLKPWR_GetPCLKSEL(ClkType);
196 
197  switch (div)
198  {
199  case 0:
200  div = 4;
201  break;
202 
203  case 1:
204  div = 1;
205  break;
206 
207  case 2:
208  div = 2;
209  break;
210 
211  case 3:
212  div = 8;
213  break;
214  }
215  retval /= div;
216 
217  return retval;
218 }
219 
220 
221 
222 /*********************************************************************/
260 void CLKPWR_ConfigPPWR (uint32_t PPType, FunctionalState NewState)
261 {
262  if (NewState == ENABLE)
263  {
264  LPC_SC->PCONP |= PPType & CLKPWR_PCONP_BITMASK;
265  }
266  else if (NewState == DISABLE)
267  {
268  LPC_SC->PCONP &= (~PPType) & CLKPWR_PCONP_BITMASK;
269  }
270 }
271 
272 
273 /*********************************************************************/
278 void CLKPWR_Sleep(void)
279 {
280  LPC_SC->PCON = 0x00;
281  /* Sleep Mode*/
282  __WFI();
283 }
284 
285 
286 /*********************************************************************/
292 {
293  /* Deep-Sleep Mode, set SLEEPDEEP bit */
294  SCB->SCR = 0x4;
295  LPC_SC->PCON = 0x8;
296  /* Deep Sleep Mode*/
297  __WFI();
298 }
299 
300 
301 /*********************************************************************/
307 {
308  /* Deep-Sleep Mode, set SLEEPDEEP bit */
309  SCB->SCR = 0x4;
310  LPC_SC->PCON = 0x09;
311  /* Power Down Mode*/
312  __WFI();
313 }
314 
315 
316 /*********************************************************************/
322 {
323  /* Deep-Sleep Mode, set SLEEPDEEP bit */
324  SCB->SCR = 0x4;
325  LPC_SC->PCON = 0x03;
326  /* Deep Power Down Mode*/
327  __WFI();
328 }
329 
338 /* --------------------------------- End Of File ------------------------------ */