呼吸灯(+proteus仿真实验)"/>
记录4——stm32f411ceu6之PWM制作呼吸灯(+proteus仿真实验)
目录
- PWM制作呼吸灯
- PWM简介
- 任务
- 工程配置
- 代码实现
- Proteus仿真
- 硬件连接图
- 仿真效果
PWM制作呼吸灯
PWM简介
如实例
任务
让LED实现从熄灭逐渐变亮,再从最亮逐渐变暗至熄灭,不断循环周期为4s。(使用定时器产生PWM,PWM周期为20ms.)
工程配置
由于控制LED的PC13无tim,可将PC13与拥有tim2_ch1的PA0用杜母线连接,可以实现同样的效果。
PSC=9999,ARR=199实现PWM周期为20ms
设置Pulse(CRR)为0,表示PWM信号最初占空比为0%
代码实现
/* USER CODE BEGIN PV */
uint16_t Duty=0;//占空比
uint16_t Step=20;//步进值
/* USER CODE END PV */
/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);//启动定时器2的通道1输出PWM信号/* USER CODE END 2 */
一次由熄灭至最亮过程进行了200(ARR)/20(Step)=10次,时间应为4/2=2s=2000ms,则每次+Step后应该延迟2000/10=200ms.
/* USER CODE BEGIN 3 */for(Duty =0;Duty <=200;Duty=Duty+Step)//修改占空比{__HAL_TIM_SET_COMPARE (&htim2 ,TIM_CHANNEL_1 ,Duty );HAL_Delay (200);//延时200ms}for(Duty =200;Duty > 0;Duty=Duty-Step)//当占空比为100%时,继续修改占空比{__HAL_TIM_SET_COMPARE (&htim2 ,TIM_CHANNEL_1 ,Duty );HAL_Delay (200);}
PS:不过,将PC13与拥有tim2_ch1的PA0用杜母线连接后,呼吸灯最亮时刻并没有之前没有PWM时的大,可能是达到100%的时间只是一瞬间,肉眼难以观察出来吧。
其实两个引脚短接可以实现完整实现PWM效果,我是之前给PC13 配置了output模式,实际上不需要任何配置,只需通过PA0电平控制PC13即可。
Proteus仿真
-
由于proteus的stm32类型有限,此处以f103c6为例,模拟仿真,相关配置参照前面的方法利用CubeMX+Keil+Proteus即可。
-
开启TIM2 Channel2的PWM,连接的选用的是PA1引脚
硬件连接图
由于一直用的是同一个工程,前面的实验所连接的引脚与器件未删除,该实验只需要PA1一个引脚即可,其他标注请自行忽略
仿真效果
proteus好像不能实现呼吸灯的效果,仅仅只是LED不断亮灭,因此用示波器来显示其波形。
更多推荐
记录4——stm32f411ceu6之PWM制作呼吸灯(+proteus仿真实验)
发布评论