13#include "NUC200Series.h"
27 uint32_t TempPrescale;
29 uint32_t TempComparator;
30 uint32_t PWM_Freq_Max;
31 uint32_t PWM_Freq_Min;
36 SYS->GPE_MFP = (
SYS->GPE_MFP & ~SYS_GPE_MFP_PE0_Msk) | SYS_GPE_MFP_PE0_PWM6;
40 if(!(SYSCLK->PWRCON&SYSCLK_PWRCON_XTL12M_EN_Msk))
42 SYSCLK->PWRCON = SYSCLK_PWRCON_XTL12M_EN_Msk;
43 while(!(SYSCLK->CLKSTATUS&SYSCLK_CLKSTATUS_XTL12M_STB_Msk));
48 SYSCLK->CLKSEL2 = (SYSCLK->CLKSEL2 & ~SYSCLK_CLKSEL2_PWM67_S_EXT_Msk) | SYSCLK_CLKSEL2_PWM67_EXT_XTAL;
49 SYSCLK->CLKSEL2 = (SYSCLK->CLKSEL2 & ~SYSCLK_CLKSEL2_PWM67_S_Msk) | SYSCLK_CLKSEL2_PWM67_XTAL;
50 SYSCLK->APBCLK |= SYSCLK_APBCLK_PWM67_EN_Msk;
60 printf(
"\nPWM67 Clock Prescale Initial Fail!\n");
62 _PWM_SET_TIMER_PRESCALE(PWMB,
PWM_CH2, (TempPrescale-1));
63 while(PWMB->SYNCBUSY2);
68 if(PWM_Frequency>PWM_Freq_Max)
71 PWM_Frequency = PWM_Freq_Max;
72 printf(
"\nPWM6 Frequency too High! Max are %d Hz\n", PWM_Freq_Max);
75 if(PWM_Frequency<PWM_Freq_Min)
78 PWM_Frequency = PWM_Freq_Min;
79 printf(
"\nPWM6 Frequency too Low! Min are %d Hz\n", PWM_Freq_Min);
90 _PWM_SET_TIMER_AUTO_RELOAD_MODE(PWMB,
PWM_CH2);
91 while(PWMB->SYNCBUSY2);
92 PWMB->CSR = (PWMB->CSR & ~PWM_CSR_CSR2_Msk) | PWM_CSR_CSR2(PWM_CSR_DIV1);
93 while(PWMB->SYNCBUSY2);
97 PWMB->CNR2 = TempCounter - 1;
98 while(PWMB->SYNCBUSY2);
99 if(TempComparator==0) PWMB->CMR2 = TempComparator;
100 else PWMB->CMR2 = TempComparator - 1;
101 while(PWMB->SYNCBUSY2);
104 _PWM_ENABLE_PWM_OUT(PWMB,
PWM_CH2);
105 while(PWMB->SYNCBUSY2);
106 _PWM_ENABLE_TIMER(PWMB,
PWM_CH2);
107 while(PWMB->SYNCBUSY2);
116 SYS->GPE_MFP &= ~SYS_GPE_MFP_PE0_Msk;
119 _PWM_DISABLE_TIMER(PWMB,
PWM_CH2);
120 _PWM_DISABLE_PWM_OUT(PWMB,
PWM_CH2);
134 uint32_t TempPrescale;
139 SYS->GPE_MFP = (
SYS->GPE_MFP & ~SYS_GPE_MFP_PE1_Msk) | SYS_GPE_MFP_PE1_PWM7;
143 if(!(SYSCLK->PWRCON&SYSCLK_PWRCON_XTL12M_EN_Msk))
145 SYSCLK->PWRCON = SYSCLK_PWRCON_XTL12M_EN_Msk;
146 while(!(SYSCLK->CLKSTATUS&SYSCLK_CLKSTATUS_XTL12M_STB_Msk));
151 SYSCLK->CLKSEL2 = (SYSCLK->CLKSEL2 & ~SYSCLK_CLKSEL2_PWM67_S_EXT_Msk) | SYSCLK_CLKSEL2_PWM67_EXT_XTAL;
152 SYSCLK->CLKSEL2 = (SYSCLK->CLKSEL2 & ~SYSCLK_CLKSEL2_PWM67_S_Msk) | SYSCLK_CLKSEL2_PWM67_XTAL;
153 SYSCLK->APBCLK |= SYSCLK_APBCLK_PWM67_EN_Msk;
163 printf(
"\nPWM67 Clock Prescale Initial Fail!\n");
165 _PWM_SET_TIMER_PRESCALE(PWMB,
PWM_CH3, (TempPrescale-1));
166 while(PWMB->SYNCBUSY3);
169 _PWM_SET_TIMER_AUTO_RELOAD_MODE(PWMB,
PWM_CH3);
170 while(PWMB->SYNCBUSY3);
171 _PWM_SET_TIMER_CLOCK_DIV(PWMB,
PWM_CH3, PWM_CSR_DIV1);
172 while(PWMB->SYNCBUSY3);
174 while(PWMB->SYNCBUSY3);
175 PWMB->PBCR |= PWM_PBCR_BCn_Msk;
178 _PWM_ENABLE_CAP_IN(PWMB,
PWM_CH3);
179 while(PWMB->SYNCBUSY3);
180 _PWM_ENABLE_CAP_FUNC(PWMB,
PWM_CH3);
181 while(PWMB->SYNCBUSY3);
182 _PWM_ENABLE_TIMER(PWMB,
PWM_CH3);
183 while(PWMB->SYNCBUSY3);
192 SYS->GPE_MFP &= ~SYS_GPE_MFP_PE1_Msk;
195 _PWM_DISABLE_TIMER(PWMB,
PWM_CH3);
196 while(PWMB->SYNCBUSY3);
197 _PWM_DISABLE_CAP_FUNC(PWMB,
PWM_CH3);
198 while(PWMB->SYNCBUSY3);
199 _PWM_DISABLE_CAP_IN(PWMB,
PWM_CH3);
200 while(PWMB->SYNCBUSY3);
216 _PWM_CLR_CAP_RISING_INDICATOR(PWMB,
PWM_CH3);
217 _PWM_CLR_CAP_FALLING_INDICATOR(PWMB,
PWM_CH3);
221 if(_PWM_GET_CAP_RISING_INDICATOR(PWMB,
PWM_CH3))
225 _PWM_CLR_CAP_RISING_INDICATOR(PWMB,
PWM_CH3);
228 else if(_PWM_GET_CAP_FALLING_INDICATOR(PWMB,
PWM_CH3))
232 _PWM_CLR_CAP_FALLING_INDICATOR(PWMB,
PWM_CH3);
275 uint32_t TempPrescale;
280 SYS->GPA_MFP = (
SYS->GPA_MFP & ~SYS_GPA_MFP_PA15_Msk) | SYS_GPA_MFP_PA15_PWM3;
281 SYS->ALT_MFP = (
SYS->ALT_MFP & ~SYS_ALT_MFP_PA15_Msk) | SYS_ALT_MFP_PA15_PWM3;
282 SYS->ALT_MFP1 = (
SYS->ALT_MFP1 & ~SYS_ALT_MFP1_PA15_Msk) | SYS_ALT_MFP1_PA15_PWM3;
286 if(!(SYSCLK->PWRCON&SYSCLK_PWRCON_XTL12M_EN_Msk))
288 SYSCLK->PWRCON = SYSCLK_PWRCON_XTL12M_EN_Msk;
289 while(!(SYSCLK->CLKSTATUS&SYSCLK_CLKSTATUS_XTL12M_STB_Msk));
294 SYSCLK->CLKSEL1 = (SYSCLK->CLKSEL1 & ~SYSCLK_CLKSEL1_PWM23_S_Msk) | SYSCLK_CLKSEL1_PWM23_XTAL;
295 SYSCLK->CLKSEL2 = (SYSCLK->CLKSEL2 & ~SYSCLK_CLKSEL2_PWM23_S_EXT_Msk) | SYSCLK_CLKSEL2_PWM23_EXT_XTAL;
296 SYSCLK->APBCLK |= SYSCLK_APBCLK_PWM23_EN_Msk;
306 printf(
"\nPWM23 Clock Prescale Initial Fail!\n");
308 _PWM_SET_TIMER_PRESCALE(PWMA,
PWM_CH3, (TempPrescale-1));
309 while(PWMA->SYNCBUSY3);
312 _PWM_SET_TIMER_AUTO_RELOAD_MODE(PWMA,
PWM_CH3);
313 while(PWMA->SYNCBUSY3);
314 _PWM_SET_TIMER_CLOCK_DIV(PWMA,
PWM_CH3, PWM_CSR_DIV1);
315 while(PWMA->SYNCBUSY3);
317 while(PWMA->SYNCBUSY3);
318 PWMA->PBCR |= PWM_PBCR_BCn_Msk;
321 _PWM_ENABLE_CAP_IN(PWMA,
PWM_CH3);
322 while(PWMA->SYNCBUSY3);
323 _PWM_ENABLE_CAP_FUNC(PWMA,
PWM_CH3);
324 while(PWMA->SYNCBUSY3);
325 _PWM_ENABLE_TIMER(PWMA,
PWM_CH3);
326 while(PWMA->SYNCBUSY3);
335 SYS->GPA_MFP &= ~SYS_GPA_MFP_PA15_Msk;
336 SYS->ALT_MFP &= ~SYS_ALT_MFP_PA15_Msk;
337 SYS->ALT_MFP1 &= ~SYS_ALT_MFP1_PA15_Msk;
340 _PWM_DISABLE_TIMER(PWMA,
PWM_CH3);
341 while(PWMA->SYNCBUSY3);
342 _PWM_DISABLE_CAP_FUNC(PWMA,
PWM_CH3);
343 while(PWMA->SYNCBUSY3);
344 _PWM_DISABLE_CAP_IN(PWMA,
PWM_CH3);
345 while(PWMA->SYNCBUSY3);
361 _PWM_CLR_CAP_RISING_INDICATOR(PWMA,
PWM_CH3);
362 _PWM_CLR_CAP_FALLING_INDICATOR(PWMA,
PWM_CH3);
366 if(_PWM_GET_CAP_RISING_INDICATOR(PWMA,
PWM_CH3))
370 _PWM_CLR_CAP_RISING_INDICATOR(PWMA,
PWM_CH3);
373 else if(_PWM_GET_CAP_FALLING_INDICATOR(PWMA,
PWM_CH3))
377 _PWM_CLR_CAP_FALLING_INDICATOR(PWMA,
PWM_CH3);
Nano100 series PWM and Capture driver header file.
#define SYS
Pointer to SYS register structure.
__STATIC_INLINE void SYS_LockReg(void)
Enable register write-protection function.
__STATIC_INLINE void SYS_UnlockReg(void)
Disable register write-protection function.
#define TRUE
Boolean true, define to use in API parameters or return value.
#define FALSE
Boolean false, define to use in API parameters or return value.
void Open_PWM7_Capture(void)
__IO uint32_t High_Period
void Close_PWM3_Capture(void)
uint32_t Open_PWM3_Capture_Fail
uint32_t Open_PWM7_Capture_Fail
void Close_PWM7_Capture(void)
void Open_PWM3_Capture(void)
__IO uint32_t Capture_Falling[2]
void Open_PWM6_OUT(uint32_t PWM_Frequency, uint32_t PWM_Duty)
void Close_PWM6_OUT(void)
#define _PWM_Prescale_Max
void Get_PWM3_Capture_Data(void)
#define _PWM_Source_Clock
__IO uint32_t Signal_Period
void Get_PWM7_Capture_Data(void)
uint32_t Open_PWM6_OUT_Fail
__IO uint32_t Capture_Rising[2]
__IO float Signal_Frequency
void SystemCoreClockUpdate(void)
Updates the SystemCoreClock with current core Clock retrieved from CPU registers.