关键词整站优化公司,pc网站开发工具,简约大气网站模板,营销型网站制作多少钱一、什么是PWM?
PWM#xff08;脉冲宽度调制#xff09;是一种用于控制电子设备的技术。它通过调整信号的脉冲宽度来控制电压的平均值。PWM常用于调节电机速度、控制LED亮度、产生模拟信号等应用。
二、PWM的原理
PWM的基本原理是通过以一定频率产生的脉冲信号#xff0…一、什么是PWM?
PWM脉冲宽度调制是一种用于控制电子设备的技术。它通过调整信号的脉冲宽度来控制电压的平均值。PWM常用于调节电机速度、控制LED亮度、产生模拟信号等应用。
二、PWM的原理
PWM的基本原理是通过以一定频率产生的脉冲信号通过调整脉冲的宽度占空比来模拟电压的不同电平。占空比是指脉冲高电平的时间占整个周期的比例。通过调整占空比可以在输出端产生不同的电平从而实现对电机、LED等设备的精确控制。
例如对于一个50%占空比的PWM信号脉冲的高电平时间占整个周期的一半这将导致输出电平的平均值为一半的电压。通过调整占空比你可以在0%到100%的范围内控制输出电平的变化。
三、PWM模式以及输出PWM原理
ARR: 自动重装载寄存器的值。 CCRx: 捕获/比较寄存器的值。
PWM波周期或频率由ARR决定,PWM波占空比由CCRx决定
(1)PWM模式1 在向上计数时一旦CNTCCRx 时输出为有效电平否则为无效电平。 在向下计数时一旦CNTCCRx 时输出为无效电平否则为有效电平。
如 当CNT CCRxIO输出1。 当CNT CCRxIO输出0。 当CNT CCRxIO输出1。 当CNT CCRxIO输出0。
(2)PWM模式2 在向上计数时一旦CNTCCRx 时输出为有效电平否则为无效电平。 在向下计数时一旦CNTCCRx 时输出为无效电平否则为有效电平。 如 当CNT CCRxIO输出0。 当CNT CCRxIO输出1。 当CNT CCRxIO输出0。 当CNT CCRxIO输出1。
四、配置PWM输出实验步骤
实验内容将PC6复用为TIM3通道1输出pwm。注stm32的pwm输出引脚是使用的IO口的复用功能。
具体代码 void PWM_Init_TIM3_CH1(u16 ccr)
{//1.初始化PC6引脚RCC-AHB1ENR |(0x01 2); //开启GPIOC的时钟GPIOC-CRL 0XF0FFFFFF;//PC6清0GPIOA-CRL | 0X0B000000;//复用功能输出(推挽50MHz输出)//2.初始化基本定时器配置RCC-APB1ENR | 1 1; //使能TIM3时钟 TIM3-SMCR ~(0x07 0); //选择内部时钟源TIM3-CR1 ~(0x035); //边沿对齐TIM3-CR1 ~(0X014); //设置为向上计数模式TIM3-CR1 |(0x01 7); //有影子缓冲。TIM3-ARR 99;//设定计数器主动重装值(决定PWM的频率)TIM3-PSC 7199;//预分频器 0为不分频 //3.初始化输出通道TIM3-CCR1 ccr; //写入比较值TIM3-CCMR1 ~(0x03 0) ; //通道配置为输出功能TIM3-CCMR1 |(0x01 3); //有影子TIM3-CCMR1 ~(0x01 7); //OC1Ref不受ETRF输入影响。TIM3-CCMR1 ~0x07 4; TIM3-CCMR1 |(0x06 4); //PWM模式1TIM3-CCER ~(0x01 1); //实际波形参考波形。 不反相TIM3-CCER | (0x01 0);//输入/捕获1输出使能TIM3-EGR |(0x01 0); //产生更新事件将上面配置更新到影子寄存器TIM3-CR1 | (0X01 0);//使能定时器3
}主函数
int main()
{//pwm范围为0-ARR。 高低电平随着pwm模式不同而不同。//如比较值为90pwm模式1向上计数低于比较值90时为高电平。PWM_Init_TIM3_CH1(90); while(1){}}