在总结孙安青老师编著的 《ARM Cortex-M3嵌入式开发实例详解——基于NXP LPC1768》的基础上写下这篇很基础的PWM单边沿触发,很感谢孙老师的书,在此表示感谢。同时我的代码是在开发板的历程上修改的,主要是验证电路板上PWM。由于我的开发板的P2.1(74引脚)引脚接的是LED,所以我就选用该引脚作为PWM的输出。以下是我pwm.c代码:pwm.c*********************************************************************************************************/
#include "lpc17xx.h"
#include "pwm.h"
#define PCLK 25000000 //外设频率为25MHz,可以在手册功率中知道
unsigned long PulseLength = 20; //PWM占空比变量,在此修改占空比
/*********************************************************************************************************
** Function name: uint32_t PWM1_Init(void)
** Descriptions: 初始化单边沿PWM输出
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
void PWM1_Init( void )
{
LPC_PINCON->PINSEL4 = (1 << 2); //配置P2.1引脚为PWM1.2功能
LPC_PWM1->CTCR = 0; //PWM1工作于定时模式
LPC_PWM1->PR = 0; //PWM1预分频比为1:1
LPC_PWM1->PC = 0;
LPC_PWM1->TC = 0; //定时器设置为0
LPC_PWM1->TCR = 0x02; //复位PWM1定时器
//以下很重要,可以查看手册P468 PWM触发器的置位和复位输入
LPC_PWM1->MR0 = PCLK - 1; //配置PWM1.2的PWM频率为1HZ (可以修改频率) 匹配位置都是MR0
LPC_PWM1->MR2 = (LPC_PWM1->MR0 + 1) * PulseLength / 100 - 1;//匹配PWM1.5的PWM的占空比为20%(可以修改) 复位位置的MR2(此处的2是根据选择的PWM不同不同,我这里是2,如果选择是PWM1.5则,此处的2是就改为5,查看手册P468) LPC_PWM1->LER = (1 << 2); //锁存PWM值并生效,需要改动此处
LPC_PWM1->MCR = 0x02; //MR0与TC匹配时复位TC,不需要修改
LPC_PWM1->PCR =(0 << 2)|(1 << 10); //配置PWM1.2为单边为输出,并使能输出,需要修改此处
LPC_PWM1->TCR = 0x09; //使能PWM1.2定时器并使能PWM功能,不需要改动此处}然后就是主函数main.c#include "lpc17xx.h"
#include "pwm.h"
//LED函数
void LED_config(void)
{
LPC_GPIO2->FIODIR |= 0x0000000ff;
}
/*********************************************************************************************************
** Function name: int main (void)
** Descriptions: 主函数
** input parameters: 无
** output parameters: 无
** Returned value: 无
*********************************************************************************************************/
int main (void)
{
SystemInit();//系统初始化
PWM1_Init();//PWM初始化
LED_config();
while(1);
}
/******************************************************************************
** End Of File
******************************************************************************/实验验证可以。以上就是LPC1768PWM单边沿输出简单代码。