📄 pwm.c
字号:
//// $Id: pwm.c 350 2009-01-12 01:25:46Z jcw $// $Revision: 350 $// $Author: jcw $// $Date: 2009-01-11 20:25:46 -0500 (Sun, 11 Jan 2009) $// $HeadURL: http://tinymicros.com/svn_public/arm/lpc2148_demo/trunk/pwm/pwm.c $//#include "FreeRTOS.h"#include "pwm.h"//////static int pwmPulseWidth = 20000;static int pwmPercentage = 50;//////int pwmDutyCycle (int percentage){ if ((percentage < 0) || (percentage > 100)) return -1; PWM_MR5 = ((configCPU_CLOCK_HZ / pwmPulseWidth) * (pwmPercentage = percentage)) / 100; PWM_LER = PWM_LER_M5L; return 0;}//////int pwmPulseWidthInMicroseconds (int us){ unsigned int count = (configCPU_CLOCK_HZ / 1000000) * us; if (count > PWM_MR0) return -1; PWM_MR5 = count; PWM_LER = PWM_LER_M5L; return 0;}//////int pwmFrequency (int frequency){ if ((frequency < 1) || (frequency >= (int) configCPU_CLOCK_HZ)) return -1; PWM_MR0 = (configCPU_CLOCK_HZ / (pwmPulseWidth = frequency)); PWM_MR5 = ((configCPU_CLOCK_HZ / pwmPulseWidth) * pwmPercentage) / 100; PWM_LER = PWM_LER_M5L | PWM_LER_M0L; return 0;}//////void pwmInit (void){ SCB_PCONP |= SCB_PCONP_PCPWM0; PCB_PINSEL1 = (PCB_PINSEL1 & ~PCB_PINSEL1_P021_MASK) | PCB_PINSEL1_P021_PWM5; PWM_TCR = PWM_TCR_CR; PWM_PR = 0; PWM_MR0 = (configCPU_CLOCK_HZ / pwmPulseWidth); PWM_MCR |= PWM_MCR_MR0R; PWM_PCR |= PWM_PCR_ENA5; PWM_TCR = (PWM_TCR_CE | PWM_TCR_PWME); pwmDutyCycle (50);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -