历史上的今天
返回首页

历史上的今天

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

正在发生

2019年09月29日 | stm32f103定时器中断

2019-09-29 来源:eefocus

stm32为我们提供了8个定时器,分为:通用是定时器(TIM2~TIM5),高级定时器(TIM1和TIM8),基本定时器(TIM6和TIM7)。


至于三者之间的区别可以参考以下博客:https://blog.csdn.net/dukai392/article/details/72058041


本次我们主要讨论的是通用定时器的基本知识以及更新中断的配置过程。


通用定时器框图如下:

由于stm32的定时器十分复杂,功能特多而本次我们只讨论他的计数跟新功能(定时)。


时钟的选择:


由框图中红色部分可知定时器的时钟来源有三个:内部时钟(CK_INT),外部时钟(TIMx_ETR),其他定时器的时钟(ITR0-ITR3).


本次我们主要讲解内部时钟的配置,至于其他时钟可以自行尝试(实际工作中大多使用内部时钟)。


内部时钟框图:

从图中可以看出:由AHB时钟经过APB1预分频系数转至APB1时钟,再通过某个规定转至TIMxCLK时钟(即内部时钟CK_INT、CK_PSC)。最终经过PSC预分频系数转至CK_CNT。

注:X1/X2有APB1预分频系数来决定,如果AHB时钟为72m,APB1预分频器值为2那么CK_PSC=APB1*2=72m。定时器最终时钟由PSC预分频器得到。


计数模式:


向上计数:从0计数到预装载值就会产生一个溢出事件,然后继续从0开始计数。


向下计数:从预装载值计数到0就会产生一个溢出事件,然后继续从预装载值开始计数。


中央对齐:计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

相关寄存器:计数器当前值寄存器CNT,预分频寄存器TIMx_PSC,自动重装载寄存器(TIMx_ARR),控制寄存器1(TIMx_CR1),DMA中断使能寄存器(TIMx_DIER)


寄存器的相关配置方法参考手册


库函数初始化定时器方法:


① 能定时器时钟:RCC_APB1PeriphClockCmd();


②  初始化定时器,配置ARR,PSC:TIM_TimeBaseInit();


③开启定时器中断,配置NVIC:


      void TIM_ITConfig();


      NVIC_Init();


④  使能定时器:TIM_Cmd();


⑥  编写中断服务函数:TIMx_IRQHandler();


Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk      (其中Tclk为PSC时钟也就是定时器还未分频时的时钟,一般为72M)


例如定时1S:


1S=(10000)*(7200)/72M


注:


typedef struct


{


  uint16_t TIM_Prescaler;       //TIMx 时钟频率除数的预分频值(PSC)


  uint16_t TIM_CounterMode;    //计数模式


  uint16_t TIM_Period;       //自动重装载值


  uint16_t TIM_ClockDivision; //时钟分频


  uint8_t TIM_RepetitionCounter; //重复计数


} TIM_TimeBaseInitTypeDef


状态标志位获取和清除:


FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);


void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

推荐阅读

史海拾趣

富捷(FOJAN)公司的发展小趣事

富捷电子深知质量是企业生存和发展的基石。因此,公司高度重视质量管理体系建设,成功导入了ISO9001/IATF16949及VDA6.3质量管理体系、ISO14001环境管理体系。在原材料管理、产品生产、产品过程检验及出货流程中,公司严格遵循体系要求,秉持全面质量管理(TQM)精神,确保每一环节都达到国际最高品质标准。这种对质量的执着追求,赢得了客户的广泛信赖和好评。

Excel Cell Electronic Co Ltd公司的发展小趣事

自1981年成立以来,ECE公司始终将技术创新作为发展的核心驱动力。早期,公司专注于电子元器件的研发和生产,通过引进国际先进技术,并结合本地市场需求进行创新,成功推出了一系列具有竞争力的产品。随着技术的不断进步,ECE公司不断加大研发投入,积极探索新的应用领域,逐渐成为电子行业的领军企业。

台湾岱恩(DAIN)公司的发展小趣事

自1981年成立以来,ECE公司始终将技术创新作为发展的核心驱动力。早期,公司专注于电子元器件的研发和生产,通过引进国际先进技术,并结合本地市场需求进行创新,成功推出了一系列具有竞争力的产品。随着技术的不断进步,ECE公司不断加大研发投入,积极探索新的应用领域,逐渐成为电子行业的领军企业。

E. Dold & Söhne KG公司的发展小趣事

在电子行业快速发展的背景下,E. Dold & Söhne KG公司始终紧跟科技潮流,致力于技术创新。公司投入大量资源研发新型电子元件和系统,以满足市场对于高性能、高可靠性产品的需求。通过不断的技术创新,E. Dold & Söhne KG公司在行业内树立了良好的口碑,成为众多知名企业的合作伙伴。

COMPEX公司的发展小趣事

在电子行业竞争激烈的今天,COMPEX公司始终坚持质量至上的原则。公司建立了严格的质量管理体系,从原材料采购到产品生产、检验、出货等各个环节都严格把关,确保产品质量符合客户要求。这种对质量的执着追求,使得COMPEX的产品在市场上具有很高的口碑和竞争力。

All Sensors公司的发展小趣事

All Sensors公司的创始人Dennis被誉为美国硅谷的传奇人物。在70年代,Dennis在硅谷成功发明了全球第一颗压力传感器,这一创新不仅奠定了All Sensors在传感器领域的领先地位,也为整个电子行业带来了新的技术革命。这颗传感器的诞生,标志着All Sensors正式踏上了传感器技术的研发之路,为后续的发展奠定了坚实的基础。

问答坊 | AI 解惑

Xilinx通过ISO/TS 16949汽车行业标准认证

赛灵思公司(Xilinx)今天宣布获得汽车行业质量标准ISO/TS 16949认证。ISO/TS 16949标准使赛灵思公司能够为整个汽车供应链提供质量和可靠性最高的电子元器件。赛灵思公司在此之前已经满足了其它世界级质量标准的严格要求,包括ISO 9 ...…

查看全部问答>

单片机C51典型应用设计代码

所有代码均在Keil C51 7.0以上版本编译通过。只需要能够运行Windows 98 以上版本的操作系统、并能够安装Keil C51 7.0以上版本的软件即可。…

查看全部问答>

搞通信的:硬件和软件哪个发展前景更大?

请大家谈谈自己相关领域的状况。…

查看全部问答>

请教!请教!

请问一下,三星笔记本管理员密码忘记了,开不了机怎么办?…

查看全部问答>

那里能找到高通qsd8x50片子的资料

我们用到高通这样一个片子,可是没有芯片资料,据高通说还没有发布,不知各位大爷有没有找得到的。 给个网址、 …

查看全部问答>

关于 飞思卡尔(freescale)i.MX51

1、阅读了一下i.MX51  ARM Cortex A8的datasheet,对于IOMUX还是不清楚, 2、还有一些缩写如:PAD、ALTn(n=0, 1, 2...)等等很多,配置一个引脚做很多工作。 3、感觉freescale的比较难理解,以前做三星的一看寄存器就知道是干什么的。 ...…

查看全部问答>

定制系统时加入了微软拼音中文输入法

定制系统时加入了微软拼音中文输入法,结果运行时,只出声母,不出韵母,打不出中文来,请问有人遇到过没,怎么解决? 1、设置了环境变量SET LOCALE=0804; 2.在platform settings中选择了中文(中国),英文(美国),默认语言设为中文; 3.在P ...…

查看全部问答>

关于驱动的调试release和debug

不知道大家对于调试的看法怎么样。一般你在调试的时候是release还是debug的。我每次都基本上时release的。因为是经理教的。只有在调试一些流层性,我们不知道架构的东西我才用debug。反正基本上不用。。用过几次也很懊恼。。点个屏漫天的打印信息。 ...…

查看全部问答>

求助:如何测量白石灰料位?

求助:料仓里的白石灰粉,当放料后,形成如图(四周高,中间低的料位情况)。 这时候测量仪表无法准确测了料位高度。 求助解决方法:如何能让料仓里的料位处于相对水平状态;或者采用什么样的仪表才能够做到精确测量?…

查看全部问答>