STM32CubeMX学习(一):通用定时器的从模式配置

前言

#创作灵感#

这几天在学习bilibili上正点原子的STM32 HAL库课程,学到通用定时器的脉冲计数实验这一章时,发现在网上难以找到用CubeMX配置通用定时器从模式的教程,遂自己研究了一下,并发此博客用作学习记录与分享。

#实验原理#

简单来说,此实验的原理就是:通过配置通用定时器的从模式,使通用定时器的时钟源为外部时钟模式1,外部时钟模式1输入来自该定时器通道1或通道2的信号,每检测到一次信号(即脉冲),定时器就计数一次(即实现脉冲计数)。

这里仅对实验原理作简要说明,详细解释请参考正点原子的STM32 HAL库课程。

CubeMX配置步骤

点击进入CubeMX,选择你用的芯片。我使用的芯片是F103ZET6,板子是正点原子的精英板。

步骤1:常规配置步骤

常规的配置步骤主要包括配置程序的烧录方式,我这里用的是STlink,配置如下图所示

配置时钟源,我用的是外部晶振,如下图所示

配置工程存储位置以及使用的环境,如下图所示

别忘了勾选上“生成.h/.c文件”,如下图所示

步骤2:配置定时器及PA0

我选用定时器2,将它的时钟源配置为外部时钟模式1的通道1,同时将通道1的io口映射为PA0,如下图所示

精英板上PA0外接了一个按键,按键另一端接了电压,所以io口要选为下拉输入,如下图所示。这个实验中所测量的脉冲,实际上就是按键按下产生的电压变化。

接下来点击TIM2的SLAVE MODE,选择外部时钟模式1,然后在Trigger Source中选择通道1,这样TIM2的时钟源就是外部时钟模式的通道1了。如下图所示

参数配置中,我们定时器和定时器的时钟都不分频,所以PSC和CKD如下图选择,你想分频就自己选分频即可;

计数模式Counter Mode选为向上计数,你想选别的也自己选即可;

ARR我选小一点,4,这样当计数器计数到5时就会溢出,这个值你自己定即可;

不用影子寄存器,所以auto-reload preload不使能,你想用使能即可;

在上面选择了外部时钟模式1为TIM2的时钟源后,Slave Mode Controller自动变为ETR Mode 1,不需要自己选;

Trigger Output Parameters我不太清楚是用来干什么的,反正保持默认即可;

Trigger Polarity就是计数器的触发极性,这里选上升沿触发,要用别的触发方式选相应的即可;

不使用滤波器,所以Trigger Filter保持为0;

我们是要用到中断的,所以要给TIM2的中断使能,如下图所示,用到的中断不多,所以中断优先级保持默认即可。

步骤三:其他配置

除上述配置外,我还配置了串口1、两个LED接的io口(PB5、PE5)、两个按键接的io口(PE3、PE4),配置不再赘述,具体参照我发的工程即可。

代码

代码是直接参照的正点原子的代码,具体请查看正点原子的资料。值得一提的是,原子在教程中用的是HAL_TIM_IC系列函数,这个实际上是用于输入捕获input capture的。经我亲测,用最普通的HAL_TIM_BASE系列函数即可,因为这个实验实际上并没有用到输入捕获的功能。

同时原子在教程中专门用HAL_TIM_IC_Start函数开启通道1,但经我亲测不需要用这个函数去专门开启通道1,因为我们这里仅是把通道1作为时钟源,并没有用到输入捕获或PWM输出。

结语

本人只是个初学者,所以学识尚浅,若有讲述不对的地方,还请多多赐教;同时作为学生,平时还是挺忙的,所以博客写得也比较简单,若有问题相与我探讨,评论区或私信均可。还望大家不吝赐教!

最后附上我的工程源码以及原子的bilibili课程链接(申明我不是给原子打广告的!):

链接:https://pan.baidu.com/s/162CeAQtl4vb2almg4a9L_A?pwd=2qfs 
提取码:2qfs 
--来自百度网盘超级会员V4的分享

第100讲 入门篇-编程实战:通用定时器脉冲计数实验_哔哩哔哩_bilibili

注意,我用的是F103ZET6和精英板,用其他芯片、板子的朋友要根据自己的具体情况进行修改!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值