STM32F103CubeMX定时器
创始人
2024-06-01 13:34:48
0

前言

定时器作为最重要的内容之一,是每一位嵌入式软件工程师必备的能力。STM32F103的定时器是非常强大的。
1,他可以用于精准定时,当成延时函数来使用。不过个人不建议这么使用,因为定时器很强大,这么搞太浪费了。如果想精准延时,建议使用滴答定时器。STM32滴答定时器SysTick精准延时,兼容HAL库和标准库
2,STM32F103的定时器可以用于定时中断,每过一段事件执行另外一段代码。
3,STM32F103的定时器能够硬件输出PWM,这个是比较常用的。如果是从C51转到STM32的初学者能够深刻感受到硬件PWM的好处。如果是C51,只能使用定时器中断,模拟PWM,具有一定的误差,而且要时刻注意其他中断会不会影响到软件PWM。但是STM32的硬件PWM无需担心这么多,只需要开始配置好硬件PWM,他就会自己运转,极其简单方便。
4,STM32的定时器有输入捕获功能,能够借此计算出输入方波的周期。
5,STM32的定时器还有编码器模式,可以给小车进行精准测速。然后根据时间和速度,还可以在没有其他辅助定位的情况下,给小车进行定位。
6,STM32还有其他的高级玩法,比如SPWM输出,死区等等。对于初学者,个人建议只要学好2,3点即可,本文也只会介绍这两点。

定时器介绍

定时器分类

STM32F103的定时器有三种,基本定时器(TIM6-TIM7),通用定时器(TIM2-TIM5)和高级定时器(TIM1和TIM8)。

但是不是所有型号的STM32F103系列单片机都有这些功能,对于市面上最为常见的STM32F103C8T6而言,他只具备一个高级定时器(TIM1)和三个通用定时器(TIM2-TIM4)。

定时器作用

定时器类型

主要功能

基本定时器

没有输入捕获通道,常用于时基,即定时功能。(也就是只能用于定时器中断,无法硬件PWM,与C51的定时器一样作用)

通用定时器

具有多路独立通道,可用于输入捕获/比较,也可用于时基。(多路独立通道是指,一个通用定时器可以同时输出4路硬件PWM。输入捕获,可以计算方波的高低电平持续时间。比较功能是指硬件PWM)

高级定时器

除具备通用定时器所有功能外,还具备带死区控制的互补信号输出、刹车输入等功能。(可用于电机控制、数字电源设计等。新手建议将高级定时器当成通用定时器来使用,其他功能,建议需要的时候再学。)

计数器分辨率:表示能够记录多少个数,如果是n位分辨率,那么可以记录个数。此处16位分辨率,所以可以记录0-65535,一共65536个数。
计数器类型:
如果计数器类型是向上计数,那么计数就是0,1,2...65535,0。
如果是向下计数,那么计数就是65535,65534...0,65535。(看图二)
预分频系数:假设我们现在的APB1是72MHZ,由图三可知TIM2是由APB1提供时基,所以此时TIM2的频率是72MHZ,这也代表了TIM2的计数寄存器跳变72次才等于1us。这样的话,TIM2的最大定时事件就只有6.5536ms(16位定时器)。这个定时事件太短了,而且高频代表着耗电(一般不考虑),所以我们需要一个预分频器进行分频。比如分频7199(注意,因为是从0开始,所以想要分频7200,就输入7199),那么现在定时器的实际频率就是10kHZ,表示TIM2计数寄存器增加1,代表着100us。
DMA:DMA是可以不经过CPU,就将数据传输到指定位置。对新手而言,学习定时器的时候,这个暂时不需要了解。
捕获/比较通道:这个可以用来捕获外界波形数据,本章暂时不介绍,如果我啥时候需要用了会补充。比较通道是用于输出硬件PWM的。
互补通道:互补通道就是,通道1输出高电平,那么通道2就输出低电平。

实操

定时器中断

cubemx配置

前期配置

这部分懒得再讲了,不知道为什么的看STM32CubeMX新建工程并点亮一个LED;

GPIO配置

定时器配置

文件生成

这部分懒得再讲了,不知道为什么的看STM32CubeMX新建工程并点亮一个LED;

keil编写

(1)这里需要做两步工作,第一步是再main函数中打开定时器中断。第二部是编写中断函数。
//中断函数随便找一个地方放着
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM3)HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
}//这个放在main函数里面,死循环前面,定时器初始化后面
HAL_TIM_Base_Start_IT(&htim3);

结果

(1)这个我就用软件调试的方法来显示算了,因为图片看不出来效果.
(2)建议复制我的,不然容易出问题
DARMSTM.DLL
pSTM32F103ZE(前面有一个-,不过如果你双击鼠标不会包括-。因为我是F103ZE的芯片,所以是这个,如果是C8就改成pSTM32F103C8)
编译无误之后

硬件PWM

cubemx配置

前期配置

前期配置与上面一致

PWM配置

PWM介绍
STM32的PWM比较强大,有两种PWM模式,根据极性不同,又可以变成四种输出方式。比较花哨。

配置
文件生成
与定时器中断部分一致

keil编写

/****这个变量定义写在main.c里面即可*****/
uint16_t PWM_Compare_Value = 16;//PWM比较值/*****这个放在main函数里面,死循环前面,定时器初始化后面****/
// 使能 TIM3 第4通道 PWM 输出
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);
//配置PWM比较值
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, PWM_Compare_Value);

结果

上一篇:VCO pulling

下一篇:Spark 键值对RDD的操作

相关内容

热门资讯

bbugreport.exe:... 哎呀,说到这个bbugreport.exe,我的心情真是五味杂陈啊!你懂的,就是那个时不时蹦出来,让...
双网叠加路由器:让网络速度如火... 哎呀,说到这个双网叠加路由器,我简直要跳起来了!你知道吗,自从我换了这款路由器,家里的网络速度简直像...
枭雄怎么重新开始-从失败到新生... 在江湖的沧桑岁月中,每一个枭雄都有过辉煌的巅峰,也有过跌入谷底的苦涩。曾经的我,手握重兵,叱咤风云,...
邮件炸弹攻击主要是什么-警惕!... 邮件炸弹攻击,听起来就像是从科幻电影里跳出来的东西,对吧?但它可是真实存在的,而且就在我们的电子邮箱...
ubuntu 1404关闭3d... 哎呀,说到这个Ubuntu14.04啊,我真的是有点头疼。尤其是那个3D效果,简直是让我眼花缭乱,头...
android操作系统耗电-安... 哎呀,说到安卓手机,我这心里就一肚子火!每次出门前,手机电量还满格,结果没一会儿,就剩下个位数了。这...
雨田蜂蜜:承载童年记忆的甜蜜滋... 在那些细雨蒙蒙的日子里,我总是不由自主地想起家乡的那片雨田,以及那从田间飘来的蜂蜜香。那是一种无法用...
身份证号码查姓名地址,背后隐藏... 嘿,小伙伴们,今天咱们来聊聊一个有点儿神秘的话题——身份证号码查姓名地址。你有没有想过,那些冷冰冰的...
巫师3 dsound.dll在... 哎呀,朋友们,今天咱们来聊聊那个让人抓狂的dsound.dll问题。你知道的,就是那个在《巫师3》里...
android+验证身份证号码... 哎呀,今天咱们来聊聊这个有点严肃但又挺重要的话题——Android手机上怎么验证身份证号码。我知道,...
360数据恢复免费吗-360 ... 大家好,我是一个对电脑一窍不通的小白。前段时间,我不小心删了电脑里的一些重要文件,心里那个急啊,就像...
苹果7使用说明书图解-探索苹果... 大家好呀!今天我要带你们一起探索苹果7的奇妙世界,用最酷炫的方式解锁它的所有秘密!别担心,我们不需要...
win10开机启动项 命令-W... 哎呀,说到Win10开机启动项,我就一肚子火!每次开机,那屏幕就像在跟我玩捉迷藏,转啊转的,半天不见...
相机内存卡文件为空-珍贵照片离... 哎呀,真是气死我了!今天兴冲冲地打开相机,准备回味一下上个周末的欢乐时光,结果一看,我的天,那些珍贵...
苹果手机怎么快速省电-掌握这些... 哎呀呀,说到苹果手机省电,我可是有一肚子的话要说!你知道吗,每次看到手机电量从满格到红线,我的心就像...
北京朝阳医院儿科电话:希望的传... 在北京这座快节奏的都市里,每一个角落都充满了匆忙与喧嚣。但如果你细心倾听,会发现有一个声音始终温暖而...
易购分销平台:海量商品、超实惠... 大家好,我是小张,一个在街角开小店的老板。今天我要给大家聊聊我最近发现的一个超级棒的地方——易购分销...
opensuse 42.2壁纸... 嘿,亲爱的OpenSUSE爱好者们,今天咱们聊聊那些让人眼前一亮的OpenSUSE42.2壁纸!这些...
帝国 政府 模板-在宏伟帝国里... 在这个宏伟的帝国里,每一天都像是政府精心布置的一盘棋。我,一个深陷其中的小卒,感受着这场游戏的起伏与...
苹果恢复大师收费标准揭秘:基本... 大家好,今天咱们来聊聊这个让人又爱又恨的“苹果恢复大师”!你知道吗?这玩意儿简直就是苹果界的救星,但...