历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2018年08月17日 | STM32学习笔记:通用定时器基本设定

2018-08-17 来源:eefocus

STM32 包含11个定时器,其中TIM2~TIM5为通用定时器。


通用定时器挂载在低速外设总线APB1上,其时钟来源于输入为APB1的一个倍频器,只要APB1的时钟分频数不为1,TIMx的时钟频率就会为APB1时钟频率的2倍,即72MHz 。




配置通用定时器需要4步(以配置TIM2为例):


(1)配置系统时钟


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);倍

开启TIM2与GPIOA的时钟,其中TIM2挂载在APB1上,GPIOA挂载在APB2上;

(2)配置NVIC


NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置NVIC中断分组2,2位抢占优先级,2为子优先级

NVIC_InitStructure.NVIC_IRQChannel = TIM2_UP_IRQn;//设置中断为TIM2上升中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//抢占优先级1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;//子优先级3

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能中断

NVIC_Init(&NVIC_InitStructure);

(3)配置GPIO


GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//PA0,PA1,PA2,PA3

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//设置为端口复用模式    

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

(4)配置TIMER


TIM_DeInit(TIM2);

TIM_TimeBaseStructure.TIM_Period = arr;           

TIM_TimeBaseStructure.TIM_Prescaler = psc;           

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;  

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  

TIM_ARRPreloadConfig(TIM2, ENABLE);  

TIM_Cmd(TIM2, ENABLE); 

[cpp] view plain copy

  

1.利用TIM_DeInit将TIMER设置为缺省值;

2.TIM_Period设置自动装入的值,累计(TIM_Period+1)个时钟脉冲后产生更新或中断;


3.TIM_Prescaler设置预分频系数,定时器的时钟频率=72Mhz/(TIM_Prescaler+1);


定时器频率=((1+TIM_Prescaler )/72M)*(1+TIM_Period )


       例:如果想要设置定时器频率为1秒,可以设置


TIM_Prescaler=35999,TIM_Period=1999 //2Khz的频率,计数到2000



TIM_Prescaler=7199,TIM_Period=9999 //10KHz的频率,计数到10000


两种不同的参数设置都会使定时器的频率为1秒,但是在作为PWM输出时会有细度不同的问题,后者的细度更高些,作者更倾向于第二种配置。


4.TIM_ClockDivision设置时钟分割,可设置为TIM_CKD_DIV1,TIM_CKD_DIV2,TIM_CKD_DIV4,


当设置为TIM_CKD_DIV1时:

       TDTS = Tck_tim

当设置为TIM_CKD_DIV2时:

       TDTS = 2Tck_tim

当设置为TIM_CKD_DIV4时:

       TDTS = 4Tck_tim;


TIM_ClockDivision的作用就是在未分频之前根据要求建立新的分频器,确定定时器,确定一定的延时时间,在此时间内完成一定预期的功能,一般不太用,所以无论是定义上文中的哪个值对原本定时器的频率都毫无影响,不过并不是没有作用的,以后会有能用到的地方。



5.TIM_CounterMode设置计数模式,可以设置为向上计数、向下计数和中央对齐计数,其中比较常用的为向上计数模式TIM_CounterMode_Up和向下计数方式TIM_CounterMode_Down;


6.TIM_RepetitionCounter设置重复溢出次数,就是多少次溢出后会给你一次中断,一般设置为0,只有高级定时器才有用;


7.TIM_ARRPreloadConfig设置是否使用 预装载缓冲器;


8.TIM_Cmd来开启定时器TIM2;


推荐阅读

史海拾趣

Hitron公司的发展小趣事

机顶盒,全称为数字视频变换盒,是连接电视机与外部信号源的重要设备,具有高度的专业性和广泛的科普意义。作为信息家电的一员,机顶盒不仅实现了数模转换,让用户能够在模拟电视上观看数字电视节目,还通过接入互联网,极大地丰富了电视节目的选择,提升了观看体验。

从广义上讲,机顶盒涵盖了从模拟频道增补器到现代的数字卫星机顶盒(DVB-S)、数字地面机顶盒(DVB-T)、有线电视数字机顶盒(DVB-C)以及IPTV机顶盒等多种类型。这些机顶盒不仅接收来自有线电缆、卫星天线、宽带网络及地面广播的信号,还提供了电子节目指南、网页浏览等增值服务,使电视机成为了一个能够与用户进行互动的智能终端。

在技术层面,机顶盒的工作原理可概括为接收、解码和显示三个步骤。它首先通过内置的调谐器接收数字电视信号,随后由内部的解码器将信号转换成电视可识别的视频和音频流,最终通过电视机呈现给用户。随着技术的不断进步,机顶盒已能支持高清、甚至4K超高清视频播放,为用户带来更为细腻的画面和震撼的音效。

未来,机顶盒市场将继续保持稳定增长态势,技术创新与智能化将成为重要的发展方向。高清化、超高清化、人工智能及云计算等技术的应用,将使机顶盒不仅限于基本的电视信号接收与解码功能,而是向智能化、多功能化方向迈进,为用户提供更加便捷、智能的生活体验。

Fairchild Imaging公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,Fairchild Imaging制定了面向未来的战略布局。公司将继续加大在成像技术领域的研发投入,推动技术创新和产品升级。同时,Fairchild Imaging还将积极拓展国际市场,加强与全球客户的合作与交流。此外,公司还将注重人才培养和团队建设,为公司的长期发展提供有力保障。

ACEINNA公司的发展小趣事

Fairchild Imaging公司的历史可以追溯到1950年成立的Fairchild Camera & Instrument Company。这家公司自创立以来,就凭借其创新的技术和优质的产品,在许多重大的政府、国防项目中发挥了关键作用。随着公司业务的不断拓展,Fairchild Camera & Instrument Company逐渐将业务重心转向半导体和集成电路领域,并在此领域取得了显著成就。最终,Fairchild Imaging从Fairchild Camera & Instrument Company中独立出来,专注于高端成像技术的研发和应用。

Advanced Analog公司的发展小趣事

创新是Advanced Analog公司发展的核心动力。公司始终坚持自主研发和技术创新,不断推出新的产品和技术。这些新产品不仅满足了市场的多样化需求,也进一步巩固了公司在电源管理IC领域的领先地位。同时,Advanced Analog还积极关注行业发展趋势和未来技术走向,为公司的长远发展做好战略布局。

General Electric Company公司的发展小趣事
可能是由于电源噪声或外部干扰引起的。解决方案是加强电源滤波、使用屏蔽措施并优化信号路径。
DBM Optix公司的发展小趣事

随着技术的不断成熟,DBM Optix开始积极拓展市场,将产品应用于更广泛的领域。公司不仅在国内市场取得了显著的成绩,还积极开拓国际市场,与全球各地的客户建立了紧密的合作关系。同时,DBM Optix还注重品牌建设,通过参加国际展会、发布技术文章等方式提升品牌知名度和影响力。这些努力使得DBM Optix逐渐成为了光学通信领域的知名品牌。

问答坊 | AI 解惑

关于ARM系统板上AD通道的问题

我做了一个arm7--LPC2132的板子,最近测试遇见了如下问题,板子上的AD通道程序在下进去时,AD通到AIN管脚出现3点多v的电压,如果这时接上外部电压几乎几十 MV,AD的AIN也呈现出1点多v的电压,但是板子的基本IO口功能却正常,请高手指教这是为啥?? ...…

查看全部问答>

请教改sdram问题

我的开发板上的内存是两片32M的SDRAM,不能运行导航软件,只要运行就提示内存不足。想换成128M的SDRAM。请问除了修改软件外还要修改硬件吗?…

查看全部问答>

求教:Platform Manager组件在CE 6.0中怎么没有了?

虚心求教: CE 5.0 中包含的Platform Manager组件在CE 6.0中怎么没有了? …

查看全部问答>

wm6访问sql server数据库,请求高手帮忙!

            if (File.Exists(\"\\\\MyDatabase.sdf\"))                 File.Delete(\"\\\\MyDatabase.sdf\");         ...…

查看全部问答>

GPRS拨号后TCP协议通而UDP和ICMP协议都不通,怎么回事?

我用QQ2440开发板串口接CSR蓝牙开发板做dun上网,拨号连接都很正常,但是拨上网以后发现UDP 和ICMP协议不通,而后TCP协议却可以通,这个问题可能有点难?…

查看全部问答>

请教PDIUSBD12 枚举问题

请教大家一个问题! 我现在在用PDIUSBD12,通过SoftConnect连接到主机,主机显示了“无法识别的USB设备”,然后在单片机的程序内收到了一个复位信号,接下来就没反应了!(接下来应该会收到主机发送的设备描述符请求才对呀)。不知道有没有人知道 ...…

查看全部问答>

712主频时间问题,为何中断处理时间没有改善

外部中断处理程序大小在100多个汇编指令,为保证中断处理时间尽量短,采用48兆主频,依然耗时很多,丢中断.请各位高手指教! 相关链接:https://bbs.eeworld.com.cn/upfiles/img/20075/2007521114421607.rar…

查看全部问答>

万用表测量交流电压如何获得更加准确的结果

  万用表是电力电子等部门不可缺少的测量仪表,一般以测量电压、电流和电阻为主要目的。万用表按显示方式分为指针万用表和数字万用表。万用表品牌较多,常见的有福禄克万用表、安捷伦万用表、吉时利万用表等。万用表是一种多功能、多量程的测量仪 ...…

查看全部问答>

LPC1768开发板之间网络传输

replyreload += \',\' + 1705701;鉴于之前发的网络专题帖子都是电脑与开发板之间的通信,而开发板与开发板之间的通信例程比较少,这里上传一个开发板之间的网络通信例程,以供大家参考一下,测试现象如下 客户端串口打印信息 服务器端串口打印信 ...…

查看全部问答>

【TI首届低功耗设计大赛】GSM短信测试

本帖最后由 tianshuihu 于 2015-1-8 00:47 编辑 采用GPS定位只能获得当前位置的信息,如果不能将信息上传其应用受到很大局限 GPS通讯应用范围很广,但是局限也很明显:一是成本很高,另一点是其本身的通信原理决定其通信地点不能有太多、太厚的 ...…

查看全部问答>