历史上的今天
返回首页

历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2021年09月22日 | 【STM32基础学习】定时器使用(HSE时钟倍频PLL 72M)

2021-09-22 来源:eefocus

1、STM32F103ZE 定时器资源介绍

共有 11 个定时器


包括 2 个高级控制定时器、4 个通用定时器、2个基本定时器(TIM6/TIM7),以及 2 个看门狗定时器和 1 个系统定时器(SysTick)。

这里写图片描述

2、基本定时器

包括 TIM6 和 TIM7 两个定时器模块


由计数器寄存器(TIMx_CNT)(和51的TH/TL一样一样的。。。。)、预分频寄存器(TIMx_PSC)、自动重装载寄存器(TIMx_ARR)三部分构成。


3、定时器时钟

时钟源有三个,HSI、HSE 和 PLL。

HSI - 由 内部 RC 振荡器产生8MHz,精度较差,对时钟精度不敏感的情况下使用;


HSE - 由 外部时钟源产生8MHz信号;


PLL - 是将 HSI 或者 HSE 的时钟倍频后提供的时钟频率


AHB 域和 APB2最大时钟频率为 72MHz,而 APB1 域允许的最大时钟频率为 36MHz。

这里写图片描述

图红色圈住的,注释“自动进行1倍或2倍 倍频”这个怎么理解呢?


就是前面的分频器加入进行1分频(就是不分频),那么后面倍频器就进行1倍频。前面的分频器进行2分频,那么后面的倍频器就进行2倍频!


当AHB提供的时钟源是72M时,那么APB1的预分频器最小需要配置成2分频!


AHB、APB 和定时器都具有预分频器,并且定时器自身还具备在特定条件下 2 倍频的功能,因此计算定时器的计数频率要充分考虑所有的影响因素,


定时器时钟 CK_CNT = CK_PSC/ (TIM_Prescaler + 1),其中 TIM_Prescaler 为定时器预分频系数,系数加 1 为实际定时器分频数。


可能还有疑问,可以重新回到前面的预分频0到3的变化,再感受下。

这里写图片描述

实际编程

这里写图片描述

4、关于基本定时器的编程步骤

固件库函数中没有针对基本定时器的配置函数,但是基本定时器我们可以看做是通用寄存器的阉割版,只是部分功能少了,所以可以直接像通用寄存器一样操作也是可以的。


1、配置结构体成员

这里写图片描述

2、 NVIC 中断优先级设置

这里写图片描述

3、清除中断标志位


TIM_ClearITPendingBit(TIM_TypeDef* TIMx, u16 TIM_IT) 中断标志位清除函数预先清除标志位。避免困扰!


4、中断初始化


TIM_ITConfig(TIM_TypeDef* TIMx, u16 TIM_IT, 

FunctionalState NewState)

;TIMx 的 x 为 1~8,表示使用哪个定时器;TIM_IT 表示中断源类型,

NewState 为中断是否使能

这里写图片描述

STM32 的定时器有 6 种中断源类型,这 6 个中断源不仅都可以触发中断,每种类型还可以单独设置中断使能。

这里写图片描述

(基本定时器重点关注TIM_IT_Update)


TIM_IT_Update:表示更新事件中断,比如计数器向上溢出/向下溢出,计数器初始化等都可以导致定时器的标志位更新,基本定时器通常都是用这个中断源!


TIM_IT_CC1~4:都是捕获/比较中断,即外部信号输入捕获、输出比较,高级和通用寄存器有这个功能,基本定时器没有这个功能!(学习可类比51中的PCA)。


TIM_IT_Trigger:表示触发事件中断。和 51 单片机的外部计数器功能类似,STM32 也可以通过外部信号实现定时器的启动、停止、初始化等,这种中断源叫触发中断源。这个功能应用比较少,基本定时器也没有,高级和通用寄存器具有这个功能。


5 、使能定时器


TIM_Cmd(TIM_TypeDef* TIMx,

FunctionalState NewState)


一般上中断服务函数是放在, stm32f10x_it.c 文件中的,但是使用时要特别注意,该文件还有9个与异常中断相关的函数,只需再后面添加自己的中断服务函数即可,不要删除已有的异常。


###5、定时时间代码的一点困惑记录

这里写图片描述

72M进行7200分频,然后分之一,对应的每计一个数的时间。

乘以100000,对应计这么多数的时间,便有了总的定时时间。


至于为什么72M呢?

这里写图片描述

课程中的两个细节记录:


①、清除中断标志位

这里写图片描述

似乎是很小的毛病,要是让自己来做,可能就会直接忽略的东西,但是他们却鲜明的写了出来,并告诉读者这里的误区,反思自己为什么考虑不到或者习惯性的选择忽略呢?其实你我之间普通人的差距本不大,无不是这些细节成就了个人,向工程师致敬,向工程师看齐。


②、中文版翻译的一点关于自动重装载影子寄存器的错误

这里写图片描述

推荐阅读

史海拾趣

General Microcircuits Corp公司的发展小趣事
选择低噪声的运算放大器,以提高系统的信噪比。
FCT electronic公司的发展小趣事

近年来,电子行业面临着成本上升、全球不稳定以及经济动荡等多重挑战。FCT electronic公司凭借其在挠性电路板领域的深厚积累,积极应对这些挑战。公司加强了对供应链的管理,提高了生产效率,降低了成本。同时,FCT electronic公司还加大了对研发的投入,推动产品向高端化、智能化方向转型升级。这些努力使FCT electronic公司在行业中保持了领先地位。

DAQ Electronics LLC公司的发展小趣事

在DAQ Electronics LLC公司的发展过程中,技术创新一直是其核心竞争力。公司不断投入研发资源,推出了多款具有自主知识产权的数据采集产品。其中,一款便携式DAQ设备因其高精度、低噪声的特点,在市场上获得了广泛认可。这款产品的成功,为公司赢得了大量客户,也为公司的后续发展奠定了坚实基础。

ELPIDA公司的发展小趣事

在成立初期,ELPIDA凭借其强大的技术实力和规模效应,迅速在全球DRAM市场中占据了重要地位。公司不断推出创新产品,扩大市场份额,成为行业内的重要参与者。然而,随着市场竞争的加剧和技术的快速变化,ELPIDA也面临着巨大的挑战。

Crane Connectors公司的发展小趣事

Crane Connectors公司深知产品质量是企业生存和发展的根本。因此,公司始终将质量管理放在首位,建立了完善的质量管理体系。从原材料采购、生产加工到产品检验、售后服务,每一个环节都严格把控,确保产品质量符合国际标准和客户要求。同时,公司还不断引进先进的质量管理理念和技术手段,提升质量管理水平。这些举措使得公司的产品质量得到了客户的高度认可,进一步提升了公司的市场竞争力。

Electroswitch公司的发展小趣事

Electroswitch Electronics Products(以下简称“Electroswitch”)成立于1986年,是Electro Switch Corp的一个子公司,后者早在1946年就已创立。在创立之初,Electroswitch就致力于设计和制造高品质的开关产品,以满足电子应用领域的各种需求。通过不断的技术创新和产品优化,Electroswitch逐渐在电子行业中树立了良好的声誉。

问答坊 | AI 解惑

无形的屏幕

哇,我的电脑屏幕隐形了,成透明的了,这...这...怎么可能?淡定淡定,这不是灵异事件,奥秘来自于墙纸...厌倦了常规的墙纸当屏幕背景,那就看一下这一组怪异墙纸,它们会让你的屏幕变无形。但是事实是,屏幕还在,只不过是视觉欺骗了我们的感觉。 ...…

查看全部问答>

请教一个简单的C51程序,

#include main() {         TMOD=0X10;         TH1=0XFE;         TL1=0X0C;         TR1=1;         ET1=1;       ...…

查看全部问答>

wince下调用软键盘的问题

在wince下调用软键盘,代码如下 void CRecorderDlg::OnBnClickedButton6() {         // TODO: Add your control notification handler code here         SipShowIM(SIPF_ON);  //Shows&nb ...…

查看全部问答>

在wince 下怎么能读取 一个像素 alpha 通道的值

我想把一个带 透明通道的bitmap作为前景贴到一个不带透明通道的背景bitmap上,试了几种方法 都不理想,包括 TransparentBlt(...),alphablend(...),还使用过maskdc 的方法,都不理想。 前两种方法把我的小的前景,拉伸到跟背景一样大;而且Transpa ...…

查看全部问答>

发个清华蓬远地取模软件

前几天取汉字模从网上下个软件,不太好,就因为取然的格式带H地,我要C语言数组地,以前用过清华蓬远的取模软件,我认为是最好地,今天翻出特发上来,大家共享,我也MARK,省得以后再找不到,呵呵…

查看全部问答>

一个晶振引发的问题

本来是51好板,就是CPU座松了,让同事搞一下变紧,拿回来突然不好用,仿真器上也不好用,本来屏幕可显开机画面,但怎么也搞不定,由于急有找了另一台机器总算把程序实验完,第二天对着这个坏板研究起来,首先是换51的40脚DIP座,小心得很,因为板上 ...…

查看全部问答>

菜农友情为STM32设计一种通用加密方法之原理

今天连续看了两篇关于加密方面的帖子,感觉自己应该友情奉献一回了~~~ 设想一种加密办法,大家看看可行吗? 关于STM32F器件电子签名以及加密问题-请指点 今日方知STM32的UID为96位即12个字节,以前知道STM32内嵌CRC32. 网上在线CRC演算工 ...…

查看全部问答>

基于Keil的LM3S811调试笔记

拿到开发板后就第一时间对LM3S811进行调试,图片已经有网友上传了我就不再上传,就说说自己调试碰到的问题一级解决方法! 1、由于我的电脑没有光驱,所以智能是手动安装仿真器的驱动,安装的过程中会出现对话框让你选择的文件,此时你只要双击那文 ...…

查看全部问答>

NOR市场晴转多云 spansion突破寻曙光

   如今,无论我们在车上、家里或是旅途中,都希望能够随时随地顺畅地浏览多媒体内容和信息。特别是在玩游戏时,我们更是贪求一个畅快、愉悦的美好体验。而这些体验的实现与提升,很大程度上取决于NOR内存产品的性能和密度。   &n ...…

查看全部问答>

困扰我好几天的问题

我做了一个简单的光电检测电路 运放用的是741,单电源供电+5v,当光敏二极管没接收光时,输出+2.4v,属于正常么?…

查看全部问答>