// initialize and start Event Recorder
EventRecorderInitialize(EventRecordAll, 1U);
EventRecorderStart();
添加事件记录
EventRecord2(1, 2, 3);
计时周期是1.001秒。
更改代码,将ARR的值配置为999:
//设置自动重装载周期值
TIM_TimeBaseStructure.TIM_Period = 1000 - 1;
这次结果就对了:
定时器原理框图计时周期计时周期由以下几个因素决定:1,时钟频率。一般为72MHz。2,预分频系数PSC计数器的时钟频率CK_CNT等于f CK_PSC /(PSC[15:0]+1)。如果想要72分频,则PSC寄存器的值应该为71.3,自动重装载寄存器。这里也要注意:在设置ARR寄存器时,也需要减去一。如果想要定时1000个周期,则寄存器的值应该设置为999.看手册中的例子:当ARR为0x36时,计数器序列为00~36,共37个值。...
STM32 高级定时器 最近在研究电机,对TIM定时器研究了一些,将一些存在疑惑的问题,通过试验和示波器分析,得到以下结论,供大家学习参考
1.介绍输出电压高低判断
输出比较时:OC1对外输出电压为示波器可以读取的电压,也是我们最终使用的电压,在这个电压输出前,有很多的配置,如下图
在工作状态时,首先是设置模式。
对应这句TIM_OCInitStructure.OCMode = TIM_OCMODE_PWM2;
比较方法满足后,就根据模式的判断输出相对应的参考电平,参考电平的高低是确定死的,相应的值通过你
● 计数器寄存器(TIMx_CNT)
● 预分频器寄存器 (TIMx_PSC)——该寄存器用设置对时钟进行分频,然后提供给计数器,作为计数器的时钟。
● 自动装载寄存器 (TIMx_ARR)
定时器的时钟来源(4个):
1)内部时钟(CK_INT)
2)外部时钟模式 1:外部输入脚(TIx)
3)外部时钟模式 2:外部触发输入(ETR)
4)内部触发输入(ITRx)
定时器的周期计算:
psc:预分频系数 (范围...
3、窗口看门狗定时器
之前分享了STM32 GPIO的原理、特性、选型和配置、如何计算RTC时钟异步预分频和同步预分频,这次简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器、基本定时器、独立看门狗定时器、窗口看门狗定时器等。
定时器作为微控制器不可缺少的外设,在STM32中也是如此。相信不少初学者学到定时器的时候对STM32的学习热情就大打折扣甚至想要放弃了,因为这一部分知识确实比较复杂。但是,如果你在之前对GPIO、串口通信、外部中断的学习中把这些外设掌握了的话,学习这个新知识并不难。
例本章共计1万余字,从STM32定时器的原理、寄存器介绍、定时器配置以及定时器的几个常用的功能(如定时器中断、定时器输出比较PWM波形、定时器输入捕获测电平长度、定时器编码器模式应用等)的使用方法来教大家掌握定时器这一外设。
对定时器周期公式的理解:
T=(arr+1)(PSC+1)/Tck 其中TCK为时钟频率,PSC为时钟预分频系数,arr为自动重装载值。
f=Tck/(psc+1)(arr+1)
Tck/(psc+1)即为时钟频率,1/f为机器周期,乘以(arr+1)即可得出定时器周期。
例子:TCK=72MHZ,psc=71.时钟周期=1us.(arr+1)值为多少,定时器周期就为多少毫秒。
1.TIMx(1-8),在库设置默认的情况下,都是72M的时钟;
名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上
最近手头项目上有个需要模拟串口的地方,而模拟串口部分有这样的一个需求:当Strat信号来的时候启动定时器TIM3,到52us后采样Start信号是否是低电平,然后希望将定时器的周期改成104us,采样剩余的9个bit。
解决思路:
① 外部中断触发时候启动TIM3(同时关闭外部中断使能),等52us后在TIM3中断里判断Rx的状态;
② 如果是低电平就改变定时器TIM3的周期为104us;
STM32定时器定时1分钟的代码应该使用TIM_TimeBaseStructure.TIM_Period来设置,具体代码如下:
TIM_TimeBaseStructure.TIM_Period = 59999; //设置在1分钟内的计数值
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化TIM3
TIM_Cmd(TIM3, ENABLE); //使能TIM3