LPCOpen Platform for LPC18XX/43XX microcontrollers: C:/w/lpcopen_docs/software/lpc_core/lpc_chip/chip_18xx_43xx/sct_pwm_18xx_43xx.h Source File

| LPCOpen Platform for LPC18XX/43XX microcontrollers 18XX43XX LPCOpen Platform for the NXP LPC18XX/43XX family of Microcontrollers

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

sct_pwm_18xx_43xx.h
Go to the documentation of this file.
1 /*
2 * @brief LPC18xx_43xx State Configurable Timer (SCT/PWM) Chip driver
3 *
4 * @note
5 * Copyright(C) NXP Semiconductors, 2013
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 licenser 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 __SCT_PWM_18XX_43XX_H_
33 #define __SCT_PWM_18XX_43XX_H_
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
56 STATIC INLINE uint32_t Chip_SCTPWM_GetTicksPerCycle(LPC_SCT_T *pSCT)
57 {
58 return pSCT->MATCHREL[0].U;
59 }
60
71 STATIC INLINE uint32_t Chip_SCTPWM_PercentageToTicks(LPC_SCT_T *pSCT, uint8_t percent)
72 {
73 return (Chip_SCTPWM_GetTicksPerCycle(pSCT) * percent) / 100;
74 }
75
86 STATIC INLINE uint32_t Chip_SCTPWM_GetDutyCycle(LPC_SCT_T *pSCT, uint8_t index)
87 {
88 return pSCT->MATCHREL[index].U;
89 }
90
103 STATIC INLINE void Chip_SCTPWM_SetDutyCycle(LPC_SCT_T *pSCT, uint8_t index, uint32_t ticks)
104 {
105 Chip_SCT_SetMatchReload(pSCT, (CHIP_SCT_MATCH_REG_T)index, ticks);
106 }
107
113 STATIC INLINE void Chip_SCTPWM_Init(LPC_SCT_T *pSCT)
114 {
115 Chip_SCT_Init(pSCT);
116 }
117
129 STATIC INLINE void Chip_SCTPWM_Start(LPC_SCT_T *pSCT)
130 {
131 Chip_SCT_ClearControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);
132 }
133
139 STATIC INLINE void Chip_SCTPWM_Stop(LPC_SCT_T *pSCT)
140 {
141 /* Stop SCT */
142 Chip_SCT_SetControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);
143
144 /* Clear the counter */
145 Chip_SCT_SetControl(pSCT, SCT_CTRL_CLRCTR_L | SCT_CTRL_CLRCTR_H);
146 }
147
154 void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq);
155
167 void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin);
168
173 #ifdef __cplusplus
174 }
175
176 #endif
177
178 #endif /* __SCT_PWM_18XX_43XX_H_ */