定时器&PWM练习

1.通过定时器Timer方式实现时间的精准控制,设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。

1.打开STM32CubeMX,点击“ACCESS TO MCU SELECTOR"创建工程,选择STM32F103C8。
2.设置RCC,“High Speed Clock(HSE)选择”Crystal、Ceramic Resonator”。
3.设置SYS,“Debug "选择“SerialWire”。
4.配置IO口,LED灯配置PB4.
在这里插入图片描述

5.设置定时器TIM,设置两个定时器,一个控制LED灯的周期性熄亮,一个控制输出”hello windows“。选择TIM2和TIM3。”Timer----->Tim2----->Clock Source(选择 Internal Clock)—>Parameter Settings",TIM3也一样。
在这里插入图片描述
系统处理时,分频系数会自动加上1,所以分频系数是72.时钟设置为72MHz,分频后得到1MHz的时钟。1MHz的时钟,计数5000次,得到时间5000/1000000=0.005S.即每个0.005秒,定时器2、3会产生一次定时中断。
6.设置中断。开启定时器TIM的中断:“NVIC----->NVIC–勾选”TIM2 global interrupt"。TIM3也一样。
生成定时器TIM的中断优先级配置代码。:“NVIC—>Code generation----》勾选”TIM2 global interrupt“。TIM3也一样。
在这里插入图片描述
7.设置时钟。如图。
在这里插入图片描述
8.设置Project Manager
在这里插入图片描述
创建完成。
9.增添代码
9.1 把要输出的字符串 保存在一个字符数组中。
在这里插入图片描述
9.2 启动定时器2、3.
该函数表示启动相应的定时器,“h”表示HAL库,“tim2”表示定时器2。所以这行代码的意思就是启动定时器2、3。
在这里插入图片描述
9.3
定时器中断回调函数。当产生中断的时候,会调用此函数。
设置一个静态变量time,一次中断的时间是0.005S,LED灯每隔两秒熄灭交替,所以需要400次中断。静态变量 time3,每隔5S 输出”hello Windows“ 所以需要1000次中断。
在这里插入图片描述
结果:

di7zhou

编译无误。
在这里插入图片描述
管脚连接:
led长脚------------PB4.
led短脚------------Gun.
在这里插入图片描述

2.使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED,实现2个 LED呼吸灯的效果。

1.打开STM32CubeMX,点击“ACCESS TO MCU SELECTOR"创建工程,选择STM32F103C8。
2.设置RCC,“High Speed Clock(HSE)选择”Crystal、Ceramic Resonator”。
3.设置SYS,“Debug "选择“SerialWire”。
4.设置TIM3和TIM4。选用TIM3的通道2,如图,TIM4也是如此
在这里插入图片描述
5.时钟设置如图。
在这里插入图片描述
6.跟之前一样设置“Project Manager”。
创建完成。
7.添加代码
7.1
定义变量存储占空比设为0。
在这里插入图片描述
7.2开启TIM3、4通道,输出PWM.在这里插入图片描述
7.3
占空比函数__HAL_TIM_SetCompare(),占空比超过200自动变0;。抓捕、比较寄存器TIM->CCR。
在这里插入图片描述
8.编译无误在这里插入图片描述
结果:

di7zhou 1

总结

把重要的函数多看几遍,思考,上网查查资料加深理解还是能做出来的。

参考链接

http://www.mcublog.cn/stm32/2021_01/stm32cubemx-dingshiqi-led/
http://www.mcublog.cn/stm32/2021_01/stm32cubemx-pwm-huxideng/
https://blog.csdn.net/zmhDD/article/details/111942507
https://blog.csdn.net/qq_45237293/article/details/111997424

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值