sysctl_11xx.h
Go to the documentation of this file.
1 /*
2  * @brief LPC11XX System Control registers and control functions
3  *
4  * @note
5  * Copyright(C) NXP Semiconductors, 2012
6  * All rights reserved.
7  *
8  * @par
9  * Software that is described herein is for illustrative purposes only
10  * which provides customers with programming information regarding the
11  * LPC products. This software is supplied "AS IS" without any warranties of
12  * any kind, and NXP Semiconductors and its licensor disclaim any and
13  * all warranties, express or implied, including all implied warranties of
14  * merchantability, fitness for a particular purpose and non-infringement of
15  * intellectual property rights. NXP Semiconductors assumes no responsibility
16  * or liability for the use of the software, conveys no license or rights under any
17  * patent, copyright, mask work right, or any other intellectual property rights in
18  * or to any products. NXP Semiconductors reserves the right to make changes
19  * in the software without notification. NXP Semiconductors also makes no
20  * representation or warranty that such application will be suitable for the
21  * specified use without further testing or modification.
22  *
23  * @par
24  * Permission to use, copy, modify, and distribute this software and its
25  * documentation is hereby granted, under NXP Semiconductors' and its
26  * licensor's relevant copyrights in the software, without fee, provided that it
27  * is used in conjunction with NXP Semiconductors microcontrollers. This
28  * copyright, permission, and disclaimer notice must appear in all copies of
29  * this code.
30  */
31 
32 #ifndef __SYSCTL_11XX_H_
33 #define __SYSCTL_11XX_H_
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
47 typedef struct {
54  __I uint32_t RESERVED1[2];
60  __I uint32_t RESERVED2[3];
65  __I uint32_t RESERVED3[8];
71  __I uint32_t RESERVED5[4];
75  __I uint32_t RESERVED6[8];
87  __I uint32_t RESERVED9[5];
88  __I uint32_t PIOPORCAP[2];
89  __I uint32_t RESERVED10[18];
92  __I uint32_t RESERVED11[6];
95  __IO uint32_t PINTSEL[8];
98  __I uint32_t RESERVED12[24];
105  __I uint32_t RESERVED14[6];
109  __I uint32_t RESERVED15[110];
111 } LPC_SYSCTL_T;
112 
121 
127 STATIC INLINE void Chip_SYSCTL_Map(CHIP_SYSCTL_BOOT_MODE_REMAP_T remap)
128 {
129  LPC_SYSCTL->SYSMEMREMAP = (uint32_t) remap;
130 }
131 
135 typedef enum {
139 #if !defined(CHIP_LPC1125)
149 #endif
151 
159 STATIC INLINE void Chip_SYSCTL_AssertPeriphReset(CHIP_SYSCTL_PERIPH_RESET_T periph)
160 {
161  LPC_SYSCTL->PRESETCTRL &= ~(1 << (uint32_t) periph);
162 }
163 
169 STATIC INLINE void Chip_SYSCTL_DeassertPeriphReset(CHIP_SYSCTL_PERIPH_RESET_T periph)
170 {
171  LPC_SYSCTL->PRESETCTRL |= (1 << (uint32_t) periph);
172 }
173 
179 STATIC INLINE void Chip_SYSCTL_PeriphReset(CHIP_SYSCTL_PERIPH_RESET_T periph)
180 {
183 }
184 
188 #define SYSCTL_RST_POR (1 << 0)
189 #define SYSCTL_RST_EXTRST (1 << 1)
190 #define SYSCTL_RST_WDT (1 << 2)
191 #define SYSCTL_RST_BOD (1 << 3)
192 #define SYSCTL_RST_SYSRST (1 << 4)
197 #define SYSCTL_NMISRC_ENABLE ((uint32_t) 1 << 31)
204 STATIC INLINE uint32_t Chip_SYSCTL_GetSystemRSTStatus(void)
205 {
206  return LPC_SYSCTL->SYSRSTSTAT;
207 }
208 
216 {
217  LPC_SYSCTL->SYSRSTSTAT = reset;
218 }
219 
227 {
228  return LPC_SYSCTL->PIOPORCAP[index];
229 }
230 
234 typedef enum CHIP_SYSCTL_BODRSTLVL {
235 #if defined(CHIP_LPC11CXX) || defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX) || defined(CHIP_LPC11XXLV) || defined(CHIP_LPC1125)
236  SYSCTL_BODRSTLVL_1_46V,
237 #else
239 #endif
240 #if defined(CHIP_LPC11XXLV)
242  SYSCTL_BODRSTLVL_RESERVED2,
243  SYSCTL_BODRSTLVL_RESERVED3,
244 #elif defined(CHIP_LPC11AXX)
245  SYSCTL_BODRSTLVL_RESERVED2,
246  SYSCTL_BODRSTLVL_2_52V,
247  SYSCTL_BODRSTLVL_2_80V,
248 #else
252 #endif
254 
260 #if defined(CHIP_LPC110X) || defined(CHIP_LPC11CXX) || defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX) || defined(CHIP_LPC1125)
261  SYSCTL_BODINTVAL_2_22V,
262  SYSCTL_BODINTVAL_2_52V,
263  SYSCTL_BODINTVAL_2_80V,
264 #endif
266 
275 STATIC INLINE void Chip_SYSCTL_SetBODLevels(CHIP_SYSCTL_BODRSTLVL_T rstlvl,
276  CHIP_SYSCTL_BODRINTVAL_T intlvl)
277 {
278  LPC_SYSCTL->BODCTRL = ((uint32_t) rstlvl) | (((uint32_t) intlvl) << 2);
279 }
280 
281 #if defined(CHIP_LPC11AXX)
282 
286 STATIC INLINE bool Chip_SYSCTL_GetBODIntStatus(void)
287 {
288  return (bool) ((LPC_SYSCTL->BODCTRL & (1 << 6)) != 0);
289 }
290 
291 #else
292 
297 {
298  LPC_SYSCTL->BODCTRL |= (1 << 4);
299 }
300 
306 {
307  LPC_SYSCTL->BODCTRL &= ~(1 << 4);
308 }
309 
310 #endif
311 
318 {
319  LPC_SYSCTL->SYSTCKCAL = sysCalVal;
320 }
321 
322 #if defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX) || defined(CHIP_LPC1125)
323 
330 STATIC INLINE void Chip_SYSCTL_SetIRQLatency(uint32_t latency)
331 {
332  LPC_SYSCTL->IRQLATENCY = latency;
333 }
334 
339 STATIC INLINE uint32_t Chip_SYSCTL_GetIRQLatency(void)
340 {
341  return LPC_SYSCTL->IRQLATENCY;
342 }
343 
344 #endif
345 
346 #if defined(CHIP_LPC11AXX) || defined(CHIP_LPC11CXX) || defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX) || defined(CHIP_LPC1125)
347 
354 STATIC INLINE void Chip_SYSCTL_SetNMISource(uint32_t intsrc)
355 {
356  LPC_SYSCTL->NMISRC = intsrc;
357 }
358 
363 STATIC INLINE void Chip_SYSCTL_EnableNMISource(void)
364 {
365  LPC_SYSCTL->NMISRC |= SYSCTL_NMISRC_ENABLE;
366 }
367 
372 STATIC INLINE void Chip_SYSCTL_DisableNMISource(void)
373 {
374  LPC_SYSCTL->NMISRC &= ~(SYSCTL_NMISRC_ENABLE);
375 }
376 
377 #endif
378 
379 #if defined(CHIP_LPC11AXX)
380 
387 STATIC INLINE void Chip_SYSCTL_SetPinInterrupt(uint32_t intno, uint8_t port, uint8_t pin)
388 {
389  LPC_SYSCTL->PINTSEL[intno] = (uint32_t) ((port << 5) | pin);
390 }
391 
392 #elif defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX)
393 
400 STATIC INLINE void Chip_SYSCTL_SetPinInterrupt(uint32_t intno, uint8_t port, uint8_t pin)
401 {
402  LPC_SYSCTL->PINTSEL[intno] = (uint32_t) (port * 24 + pin);
403 }
404 
405 #endif
406 
407 #if defined(CHIP_LPC11UXX)
408 
415 STATIC INLINE void Chip_SYSCTL_SetUSBCLKCTRL(uint32_t ap_clk, uint32_t pol_clk)
416 {
417  LPC_SYSCTL->USBCLKCTRL = ap_clk | (pol_clk << 1);
418 }
419 
424 STATIC INLINE bool Chip_SYSCTL_GetUSBCLKStatus(void)
425 {
426  return (bool) ((LPC_SYSCTL->USBCLKST & 0x1) != 0);
427 }
428 
429 #endif
430 
431 #if defined(CHIP_LPC110X) || defined(CHIP_LPC11XXLV) || defined(CHIP_LPC11CXX) || defined(CHIP_LPC1125)
432 
439 STATIC INLINE void Chip_SYSCTL_SetStartPin(uint32_t pin, uint32_t edge)
440 {
441  if (edge) {
442  LPC_SYSCTL->STARTAPRP0 |= (1 << pin);
443  }
444  else {
445  LPC_SYSCTL->STARTAPRP0 &= ~(1 << pin);
446  }
447 }
448 
455 STATIC INLINE void Chip_SYSCTL_EnableStartPin(uint32_t pin)
456 {
457  LPC_SYSCTL->STARTERP0 |= (1 << pin);
458 }
459 
466 STATIC INLINE void Chip_SYSCTL_DisableStartPin(uint32_t pin)
467 {
468  LPC_SYSCTL->STARTERP0 &= ~(1 << pin);
469 }
470 
477 STATIC INLINE void Chip_SYSCTL_ResetStartPin(uint32_t pin)
478 {
479  LPC_SYSCTL->STARTRSRP0CLR = (1 << pin);
480 }
481 
488 STATIC INLINE bool Chip_SYSCTL_GetStartPinStatus(uint32_t pin)
489 {
490  return (bool) ((LPC_SYSCTL->STARTSRP0 & (1 << pin)) != 0);
491 }
492 
493 #endif
494 
495 #if defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX)
496 
502 STATIC INLINE void Chip_SYSCTL_EnablePINTWakeup(uint32_t pin)
503 {
504  LPC_SYSCTL->STARTERP0 |= (1 << pin);
505 }
506 
513 STATIC INLINE void Chip_SYSCTL_DisablePINTWakeup(uint32_t pin)
514 {
515  LPC_SYSCTL->STARTERP0 &= ~(1 << pin);
516 }
517 
521 #define SYSCTL_WAKEUP_WWDTINT (1 << 12)
522 #define SYSCTL_WAKEUP_BODINT (1 << 13)
523 #define SYSCTL_WAKEUP_USB_WAKEUP (1 << 19)
524 #define SYSCTL_WAKEUP_GPIOINT0 (1 << 20)
525 #define SYSCTL_WAKEUP_GPIOINT1 (1 << 21)
532 STATIC INLINE void Chip_SYSCTL_EnablePeriphWakeup(uint32_t periphmask)
533 {
534  LPC_SYSCTL->STARTERP1 |= periphmask;
535 }
536 
542 STATIC INLINE void Chip_SYSCTL_DisablePeriphWakeup(uint32_t periphmask)
543 {
544  LPC_SYSCTL->STARTERP1 &= ~periphmask;
545 }
546 
547 #endif
548 
549 #if !defined(LPC11AXX)
550 
553 #define SYSCTL_DEEPSLP_BOD_PD (1 << 3)
554 #define SYSCTL_DEEPSLP_WDTOSC_PD (1 << 6)
555 #if defined(CHIP_LPC11XXLV)
556 #define SYSCTL_DEEPSLP_IRCOUT_PD (1 << 0)
557 #define SYSCTL_DEEPSLP_IRC_PD (1 << 1)
558 #endif
559 
570 void Chip_SYSCTL_SetDeepSleepPD(uint32_t sleepmask);
571 
578 {
579  return LPC_SYSCTL->PDSLEEPCFG;
580 }
581 
585 #define SYSCTL_SLPWAKE_IRCOUT_PD (1 << 0)
586 #define SYSCTL_SLPWAKE_IRC_PD (1 << 1)
587 #define SYSCTL_SLPWAKE_FLASH_PD (1 << 2)
588 #define SYSCTL_SLPWAKE_BOD_PD (1 << 3)
589 #define SYSCTL_SLPWAKE_ADC_PD (1 << 4)
590 #define SYSCTL_SLPWAKE_SYSOSC_PD (1 << 5)
591 #define SYSCTL_SLPWAKE_WDTOSC_PD (1 << 6)
592 #define SYSCTL_SLPWAKE_SYSPLL_PD (1 << 7)
593 #if defined(CHIP_LPC11UXX)
594 #define SYSCTL_SLPWAKE_USBPLL_PD (1 << 8)
595 #define SYSCTL_SLPWAKE_USBPAD_PD (1 << 10)
596 #endif
597 
608 void Chip_SYSCTL_SetWakeup(uint32_t wakeupmask);
609 
616 {
617  return LPC_SYSCTL->PDWAKECFG;
618 }
619 
620 #endif
621 
625 #define SYSCTL_POWERDOWN_IRCOUT_PD (1 << 0)
626 #define SYSCTL_POWERDOWN_IRC_PD (1 << 1)
627 #define SYSCTL_POWERDOWN_FLASH_PD (1 << 2)
628 #if !defined(CHIP_LPC11AXX)
629 #define SYSCTL_POWERDOWN_BOD_PD (1 << 3)
630 #endif
631 #define SYSCTL_POWERDOWN_ADC_PD (1 << 4)
632 #define SYSCTL_POWERDOWN_SYSOSC_PD (1 << 5)
633 #define SYSCTL_POWERDOWN_WDTOSC_PD (1 << 6)
634 #define SYSCTL_POWERDOWN_SYSPLL_PD (1 << 7)
635 #if defined(CHIP_LPC11UXX)
636 #define SYSCTL_POWERDOWN_USBPLL_PD (1 << 8)
637 #define SYSCTL_POWERDOWN_USBPAD_PD (1 << 10)
638 #endif
639 #if defined(CHIP_LPC11AXX)
640 #define SYSCTL_POWERDOWN_LFOSC_PD (1 << 13)
641 #define SYSCTL_POWERDOWN_DAC_PD (1 << 14)
642 #define SYSCTL_POWERDOWN_TS_PD (1 << 15)
643 #define SYSCTL_POWERDOWN_ACOMP_PD (1 << 16)
644 #endif
645 
651 void Chip_SYSCTL_PowerDown(uint32_t powerdownmask);
652 
658 void Chip_SYSCTL_PowerUp(uint32_t powerupmask);
659 
666 {
667  return LPC_SYSCTL->PDRUNCFG;
668 }
669 
675 {
676  return LPC_SYSCTL->DEVICEID;
677 }
678 
683 #ifdef __cplusplus
684 }
685 #endif
686 
687 #endif
__IO uint32_t SYSPLLCLKUEN
Definition: sysctl_11xx.h:62
__IO uint32_t CLKOUTSEL
Definition: sysctl_11xx.h:84
std::uint8_t uint8_t
Definition: std.hpp:24
__IO uint32_t SYSTCKCAL
Definition: sysctl_11xx.h:91
__IO uint32_t PDSLEEPCFG
Definition: sysctl_11xx.h:106
#define STATIC
Definition: lpc_types.h:140
__I uint32_t RESERVED4
Definition: sysctl_11xx.h:69
__IO uint32_t CLKOUTUEN
Definition: sysctl_11xx.h:85
__IO uint32_t SSP1CLKDIV
Definition: sysctl_11xx.h:74
void Chip_SYSCTL_SetWakeup(uint32_t wakeupmask)
Setup wakeup behaviour from deep sleep.
void Chip_SYSCTL_PowerDown(uint32_t powerdownmask)
Power down one or more blocks or peripherals.
CHIP_SYSCTL_BOOT_MODE_REMAP
Definition: sysctl_11xx.h:116
STATIC INLINE void Chip_SYSCTL_ClearSystemRSTStatus(uint32_t reset)
Clear system reset status.
Definition: sysctl_11xx.h:215
__IO uint32_t STARTSRP0
Definition: sysctl_11xx.h:102
__IO uint32_t SYSMEMREMAP
Definition: sysctl_11xx.h:48
__IO uint32_t SYSRSTSTAT
Definition: sysctl_11xx.h:59
STATIC INLINE void Chip_SYSCTL_DisableBODReset(void)
Disable brown-out detection reset.
Definition: sysctl_11xx.h:305
STATIC INLINE uint32_t Chip_SYSCTL_GetPowerStates(void)
Get power status.
Definition: sysctl_11xx.h:665
__IO uint32_t USBCLKDIV
Definition: sysctl_11xx.h:78
__I uint32_t USBPLLSTAT
Definition: sysctl_11xx.h:53
__IO uint32_t USBPLLCLKSEL
Definition: sysctl_11xx.h:63
void Chip_SYSCTL_SetDeepSleepPD(uint32_t sleepmask)
Setup deep sleep behaviour for power down.
__IO uint32_t NMISRC
Definition: sysctl_11xx.h:94
#define __I
Definition: core_cm0.h:151
__IO uint32_t SYSAHBCLKDIV
Definition: sysctl_11xx.h:68
STATIC INLINE void Chip_SYSCTL_SetSYSTCKCAL(uint32_t sysCalVal)
Set System tick timer calibration value.
Definition: sysctl_11xx.h:317
__I uint32_t RESERVED13
Definition: sysctl_11xx.h:103
__I uint32_t RESERVED7
Definition: sysctl_11xx.h:79
STATIC INLINE void Chip_SYSCTL_EnableBODReset(void)
Enable brown-out detection reset.
Definition: sysctl_11xx.h:296
__I uint32_t SYSPLLSTAT
Definition: sysctl_11xx.h:51
__IO uint32_t SYSAHBCLKCTRL
Definition: sysctl_11xx.h:70
__IO uint32_t WDTCLKSEL
Definition: sysctl_11xx.h:80
#define SYSCTL_NMISRC_ENABLE
Definition: sysctl_11xx.h:197
__IO uint32_t SYSPLLCTRL
Definition: sysctl_11xx.h:50
LPC11XX System Control block structure.
Definition: sysctl_11xx.h:47
STATIC INLINE uint32_t Chip_SYSCTL_GetDeviceID(void)
Return the device ID.
Definition: sysctl_11xx.h:674
enum CHIP_SYSCTL_BODRSTLVL CHIP_SYSCTL_BODRSTLVL_T
__IO uint32_t WDTCLKDIV
Definition: sysctl_11xx.h:82
__IO uint32_t LFOSCCTRL
Definition: sysctl_11xx.h:58
__IO uint32_t SSP0CLKDIV
Definition: sysctl_11xx.h:72
__I uint32_t USBCLKST
Definition: sysctl_11xx.h:97
#define __IO
Definition: core_cm0.h:154
__IO uint32_t USBPLLCLKUEN
Definition: sysctl_11xx.h:64
__IO uint32_t USBPLLCTRL
Definition: sysctl_11xx.h:52
void Chip_SYSCTL_PowerUp(uint32_t powerupmask)
Power up one or more blocks or peripherals.
STATIC INLINE void Chip_SYSCTL_PeriphReset(CHIP_SYSCTL_PERIPH_RESET_T periph)
Resets a peripheral.
Definition: sysctl_11xx.h:179
__I uint32_t DEVICEID
Definition: sysctl_11xx.h:110
__IO uint32_t IRCCTRL
Definition: sysctl_11xx.h:57
std::uint32_t uint32_t
Definition: std.hpp:26
__IO uint32_t MAINCLKUEN
Definition: sysctl_11xx.h:67
#define INLINE
Definition: lpc_types.h:205
STATIC INLINE void Chip_SYSCTL_AssertPeriphReset(CHIP_SYSCTL_PERIPH_RESET_T periph)
Assert reset for a peripheral.
Definition: sysctl_11xx.h:159
__IO uint32_t USBCLKSEL
Definition: sysctl_11xx.h:76
STATIC INLINE void Chip_SYSCTL_DeassertPeriphReset(CHIP_SYSCTL_PERIPH_RESET_T periph)
De-assert reset for a peripheral.
Definition: sysctl_11xx.h:169
STATIC INLINE void Chip_SYSCTL_SetBODLevels(CHIP_SYSCTL_BODRSTLVL_T rstlvl, CHIP_SYSCTL_BODRINTVAL_T intlvl)
Set brown-out detection interrupt and reset levels.
Definition: sysctl_11xx.h:275
CHIP_SYSCTL_BODRINTVAL
Definition: sysctl_11xx.h:258
__IO uint32_t SYSPLLCLKSEL
Definition: sysctl_11xx.h:61
__IO uint32_t STARTERP1
Definition: sysctl_11xx.h:104
__IO uint32_t WDTOSCCTRL
Definition: sysctl_11xx.h:56
#define LPC_SYSCTL
Definition: chip.h:181
__IO uint32_t STARTERP0
Definition: sysctl_11xx.h:100
__IO uint32_t USARTCLKDIV
Definition: sysctl_11xx.h:73
__IO uint32_t IRQLATENCY
Definition: sysctl_11xx.h:93
STATIC INLINE uint32_t Chip_SYSCTL_GetDeepSleepPD(void)
Returns current deep sleep mask.
Definition: sysctl_11xx.h:577
__IO uint32_t SYSOSCCTRL
Definition: sysctl_11xx.h:55
unsigned pin
Definition: board.cpp:35
CHIP_SYSCTL_BODRSTLVL
Definition: sysctl_11xx.h:234
STATIC INLINE uint32_t Chip_SYSCTL_GetWakeup(void)
Return current wakeup mask.
Definition: sysctl_11xx.h:615
__IO uint32_t PDRUNCFG
Definition: sysctl_11xx.h:108
__IO uint32_t BODCTRL
Definition: sysctl_11xx.h:90
__IO uint32_t USBCLKUEN
Definition: sysctl_11xx.h:77
__IO uint32_t PDWAKECFG
Definition: sysctl_11xx.h:107
enum CHIP_SYSCTL_BODRINTVAL CHIP_SYSCTL_BODRINTVAL_T
__I uint32_t RESERVED8
Definition: sysctl_11xx.h:83
__IO uint32_t STARTAPRP0
Definition: sysctl_11xx.h:99
STATIC INLINE void Chip_SYSCTL_Map(CHIP_SYSCTL_BOOT_MODE_REMAP_T remap)
Re-map interrupt vectors.
Definition: sysctl_11xx.h:127
__IO uint32_t STARTRSRP0CLR
Definition: sysctl_11xx.h:101
__IO uint32_t MAINCLKSEL
Definition: sysctl_11xx.h:66
enum CHIP_SYSCTL_BOOT_MODE_REMAP CHIP_SYSCTL_BOOT_MODE_REMAP_T
__IO uint32_t PRESETCTRL
Definition: sysctl_11xx.h:49
__IO uint32_t USBCLKCTRL
Definition: sysctl_11xx.h:96
__IO uint32_t WDTCLKUEN
Definition: sysctl_11xx.h:81
STATIC INLINE uint32_t Chip_SYSCTL_GetPORPIOStatus(int index)
Read POR captured PIO status.
Definition: sysctl_11xx.h:226
__IO uint32_t CLKOUTDIV
Definition: sysctl_11xx.h:86
CHIP_SYSCTL_PERIPH_RESET_T
Definition: sysctl_11xx.h:135


uavcan_communicator
Author(s):
autogenerated on Wed Jan 11 2023 03:59:39