赞
踩
软件:
STM32CubeMX
KEIL5
mcuisp
串口通信助手
硬件:
STM32F103C8Tx
杜邦线,面包板,USB转TTL
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。广泛应用于电机控制、灯光的亮度调节、功率控制等领域。
周期(Period): 一个完整PWM波形所持续的时间
占空比(Duty): 高电平持续时间(Ton)与周期时间(Period)的比值
占空比计算公式: Duty = ( Ton / Period ) x 100%
功能单元 | 功能 |
---|---|
输入捕获单元 | 用于捕获外部触发信号,捕获方式为上升沿/下降沿/双边沿捕获。发生捕获事件时,将此刻计数器的值锁存到捕获/比较寄存器中,供用户读取,同时可以产生捕获中断。 |
捕获/比较寄存器 | TIMx_CCR寄存器在输入捕获模式下用于存放发生捕获事件时的当前计数值;在输出比较模式下用于存放预设的比较值。该寄存器具备预装载功能。 |
输出比较单元 | 用于信号输出。定时器通过将预设的比较值与计数器的值做匹配比较,以实现各类输出,如PWM输出、单脉冲输出等。预设的比较值存放在捕获/比较寄存器中。 |
(1)配置定时器3。如图,位置1选中定时器3;位置2选择时钟源为“Internal Clock”,通道2选择“PWM Generation CH2”
位置3设置分频系数为71,计数周期为500,其它默认。
位置4设置占空比初始值为10,其实这里不写也没影响。
(2)TIM4同理配置,如图
(1)打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。
(2)系统时钟选择HSE,PLL锁相环倍频9倍,系统时钟来源选择为PLL,置APB1分频器为 /2
(1)选择项目名称,选择IDE为MDK-ARM
(2)选择复制所有库文件到项目当中
1.修改工程。打开工程,主要修改main.c文件。定义一个变量,用来存储占空比:
代码:
uint16_t duty_num = 10; //占空比
int flag = 0; //逐亮或逐暗标志
2.开始TIM2的通道3,4,输出PWM。
代码:
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2); //打开tim3的通道2
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2); //打开tim4的通道2
3.编写PWM波形生成函数
每隔50毫秒,占空比加10,如果超过500(也就是PWM周期),将标志flag置1,减少占空比,如果小于10,将标志flag置0,增加占空比
void TIM34_PWM() { HAL_Delay(30); //延时30ms if(flag==0) { duty_num = duty_num + 10; //当flag=2时将占空比增加10 } if(flag==1) { duty_num = duty_num - 10; //当flag=1时将占空比减少10 } if(duty_num > 500) { flag=1; //将标志转为逐暗 } if(duty_num < 10) { flag=0; //将标志转为逐亮 } __HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,duty_num); //配置PWM波形 __HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,duty_num); }
4.修改while循环中的代码
while (1)
{
TIM34_PWM();//调用PWM波生成函数
}
修改后,保存,编译、下载,重新上电。可以看到外设LED以及最小开发板自带的LED,从亮倒暗,逐渐变化。
根据设计的程序连接电路:
对于USB转TTL模块和stm32f103c8t6连接:
GND — GND
3v3 — 3v3
TXD — A10
RXD — A9
总电路:
红——A7
B7——C13
程序烧录运行后,查看外设LED灯以及最小开发板自带LED的状态
这样通过PWM制作的呼吸灯就完成了
PWM(脉冲宽度调制)控制技术——通过 对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。根据拟合波形的频率、幅值和半周期脉冲数,准确计算 PWM 波各脉冲宽度和间隔,据此控制开关器件的通断,就可得到所需 PWM 波形,再将PWM波形通过引脚输出,就可以实现呼吸灯,通过这种思想也可以用来控制电机转速。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。