什么是PWM?
脉冲宽度调制(Pulse Width Modulation,PWM)简称脉宽调制
是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术
简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。
//TIM14 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM14_PWM_Init(u32 arr,u32 psc)
{
//此部分需手动修改IO口设置
RCC->APB1ENR|=1<<8; //TIM14时钟使能
RCC->AHB1ENR|=1<<5; //使能PORTF时钟
GPIO_Set(GPIOF,PIN9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//复用功能,上拉输出
GPIO_AF_Set(GPIOF,9,9); //PF9,AF9
TIM14->ARR=arr; //设定计数器自动重装值
TIM14->PSC=psc; //预分频器不分频
TIM14->CCMR1|=6<<4; //CH1 PWM1模式
TIM14->CCMR1|=1<<3; //CH1 预装载使能
TIM14->CCER|=1<<0; //OC1 输出使能
TIM14->CCER|=1<<1; //OC1 低电平有效
TIM14->CR1|=1<<7; //ARPE使能
TIM14->CR1|=1<<0; //使能定时器14
}
通过修改TIM14->CCR1的值可以修改PWM的占空比,可以使用宏定义,这样使修改更加方便。
#define PWM_VAL TIM14->CCR1
主程序中:
TIM14_PWM_Init(100-1,8400-1); //10Khz的计数频率,100HZ的PWM.
如果设置PWM_VAL的值为50,就产生了占空比为50%为的PWM。
全部资料51hei下载地址:
PWM输出实验.rar
(279.95 KB, 下载次数: 74)
|