PAGE1
PAGE1
LPC1100系列的PWM控制
PWM概述
脉宽调制(PulseWidthModulation,PWM)是一种通过调整脉冲的宽度来编码信号的技术。在嵌入式系统中,PWM常用于控制电机的速度、LED的亮度、模拟信号的输出等。LPC1100系列单片机提供了灵活的PWM控制器,可以通过配置定时器和匹配寄存器来实现不同频率和占空比的PWM信号。
LPC1100系列中的PWM控制器
LPC1100系列单片机中的PWM功能主要通过定时器/计数器(Timer/Counter)实现。该系列单片机的定时器/计数器模块支持多种工作模式,包括PWM模式。定时器/计数器模块的主要组成部分包括:
定时器寄存器(TimerRegister):用于设置定时器的计数周期。
匹配寄存器(MatchRegister):用于设置定时器在达到特定值时触发事件,如PWM信号的高电平和低电平转换。
PWM控制寄存器(PWMControlRegister):用于配置PWM的工作模式和特性。
中断控制寄存器(InterruptControlRegister):用于配置定时器中断。
配置PWM
选择定时器
LPC1100系列单片机通常有几个定时器/计数器模块,可以选择其中一个来实现PWM功能。例如,LPC1114单片机有4个定时器/计数器模块(T0,T1,T2,T3)。
配置定时器寄存器
定时器寄存器(TC)用于设置定时器的计数周期。可以通过设置定时器的预分频器(PR)和匹配寄存器(MR)来控制PWM信号的频率和占空比。
设置预分频器
预分频器(PR)用于控制定时器的计数频率。其值决定了定时器在每个时钟周期内计数的次数。例如,如果系统时钟为12MHz,预分频器设置为119,则定时器的计数频率为100kHz。
//设置预分频器
LPC_TIMER16_0-PR=119;//预分频器值为119
设置匹配寄存器
匹配寄存器(MR)用于设置定时器在达到特定值时触发事件。通常,一个匹配寄存器用于设置PWM信号的周期,另一个匹配寄存器用于设置PWM信号的占空比。
//设置匹配寄存器
LPC_TIMER16_0-MR0=999;//周期匹配值
LPC_TIMER16_0-MR1=499;//占空比匹配值
配置PWM控制寄存器
PWM控制寄存器(MCR)用于配置定时器在达到匹配值时的行为。例如,可以配置定时器在达到MR0时复位,在达到MR1时切换PWM信号的状态。
//配置匹配控制寄存器
LPC_TIMER16_0-MCR=(10)|(11);//MR0复位,MR1匹配
配置输出引脚
PWM信号通常通过GPIO引脚输出。需要配置相应的引脚为PWM输出模式。
//配置GPIO引脚为PWM输出
LPC_PINCON-PINSEL0|=(14)|(16);//P0.2和P0.3为T0.0和T0.1
LPC_PINCON-PINSEL1=~(10);//清除其他设置
LPC_PINCON-PINSEL1|=(11);//设置P0.2为T0.0
LPC_PINCON-PINSEL1=~(12);//清除其他设置
LPC_PINCON-PINSEL1|=(13);//设置P0.3为T0.1
示例:使用LPC1114生成PWM信号
下面是一个具体的示例,使用LPC1114单片机生成一个50Hz的PWM信号,占空比为50%。
硬件配置
假设我们使用LPC1114的定时器0(T0)和引脚P0.2来输出PWM信号。系统时钟为12MHz。
软件配置
初始化定时器
首先,需要初始化定时器0,设置预分频器和匹配寄存器。
//初始化定时器0
LPC_TIM0-PR=119;//预分频器值为119
LPC_TIM0-MR0=999;//周期匹配值
LPC_TIM0-MR1=499;//占空比匹配值
LPC_TIM0-MCR=(10)|(11);//MR0复位,MR1匹配
配置GPIO引脚
配置P0.2引脚为PWM输出模式。
//配置GPIO引脚为PWM输出
LPC_PINCON-PINSEL0|=(14);//P0.2为T0.0
LPC_PINCON-PINSEL1=~(10);//清除其他设置
LPC_PINCON-PINSEL1|=(11);//设置P0.2为T0.0
启动定时器
启动定时器0并使其开始计数。
//启动定时器0
LPC_TIM0-TCR=(10);//复位定时器
LPC_TI