踩坑STM32F103系列-----定时器
三勺最近在学习STM32F103的定时器功能,本文主要解释在配置通用、基本、高级定时器寄存器实现相应功能时遇到的一些问题。
目标一:基本定时器的1ms定时功能
根据技术手册设置:
1/**
2 * @brief 定时器6 1ms定时
3 * @param None
4 * @retval None
5 */
6void Cbsp::time::time_basic(void)
7{
8 mod.nvic.MY_NVIC_Init(3,3,TIM6_IRQn,2);
9 //=====定时器6时钟======//
10 RCC- >APB1ENR |= 1< < 4;
11
12 //=====定时器6初始化=====//
13 //-自动装载-//
14 TIM6- >CR1 |= 1< < 7;
15
16 //-更新中断使能-//
17 TIM6- >DIER |= 1< < 0;
18 //-设置计数周期-//
19 //TIM6- >CNT = 1000;
20 //-自动重装寄存器-//
21 TIM6- >ARR = 1000-1;
22 //-预分频寄存器-//
23 TIM6- >PSC = 36-1;
24 //-开启计数器使能-//
25 TIM6- >CR1 |= 1< < 0;
26}
在中断服务函数中翻转GPIOC13的电平。
使用逻辑分析仪分析:
现象1 :根据逻辑分析仪的采样结果,发现定时时间并不是1ms,而实2ms。
原因和步骤 :按照计算公式APB1的时钟为36M,定时器6设置36分频,每次累加的时间为1us,ARR寄存器为1000,则定时时间为1ms。出现这种情况唯一的可能就是定时器的时钟频率是72M导致的。
查看数据手册的时钟章节框图可以发现端倪,在APB136M时钟后,由于满足了APB1预分配不为1的条件,定时器时钟进行了倍频。

因此修改定时器的分配系数为72-1,再用逻辑分析仪抓取波形,定时时间正确。

目标二:高级定时器3路互补输出+死区
现象: 一点波形也没有,都是低电平。
原因和步骤:
第一,代码的第61行MOE位主输出使能,忘记设置。
第二,代码的第58、59行,死区时间设置的比波形还长导致一直输出的是低电平。
修正后波形如下:

关键字:STM32F103
引用地址:
学习STM32F103的定时器功能
推荐阅读最新更新时间:2026-03-20 11:14
STM32-基本定时器TIM6-TIM7基本定时功能
1. STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生DMA请求 捕获/比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 没有 TIM6 TIM7 16位 向上 1-6553
[单片机]
STM32系列芯片定时器的主要功能及应用解析
STM32系列芯片拥有最少3个、最多8个16位的定时器,这是定时器通过可编程预分频器驱动的16位自动装载计数器构成。 定时器的主要功能有如下几个大点: 1.16位向上、向下、向上/向下自动装载计数器。 2.16位可编程预分频器。 3.4个独立通道(输入捕获,输出比较,PWM生成,单脉冲模式输出)。 4.使用外部信号控制定时器和定时器互连的同步电路。 5.如下事件发生时产生中断/DMA(更新,触发事件,输入捕获,输出比较等)。 tips:高级定时器1和8还具有死区时间可编程的互补输出。 在学习定时器的时候,许多的底层问题,我们可以参考相应的参考手册,这里主要介绍定时器固件库函数的使用。 1.TIM_DeInit函数的功能是将外设
[单片机]
STM32有哪几种定时器 STM32高级定时器有哪些功能
在数字电路中时钟是整个电路的心脏,电路的的一举一动都是根据时钟节拍下进行的,随着信息量逐渐提高,对硬件信息处理能力提出了更大的需求,时钟作为数字硬件的关键成员,其性能需要我们关注,尤其在高速电路设计中对模拟转换芯片对时钟性能有很高的需求,因此正确选择时钟是很关键的一步,前提是我们要了解时钟的关键参数咯。在数字电路中最常见的时钟元件有晶振和锁相环、时钟缓冲器等,本节对外部定时器进行重点讲解。 STM32 定时器专题讲解 SysTick定时器的功能比较单一,主要是供给系统使用的,系统默认设置为1ms触发一次中断。而用户想要使用自己的定时器,STM32提供的用户定时器不但数量多且功能更加强大。不同型号的STM32提供的定时器数量不同
[单片机]
STM32低功耗定时器(LPTIM)有哪些独特功能
开发低功耗产品,我们会比较关注整个系统的功耗问题。那么,LPTIM低功耗定时器你有关注吗? 1写在前面 在早些年,可能较少听见LPTIM这个名词。随着低功耗产品需求越来越严格,MCU厂商就推出了针对低功耗应用的LPTIM定时器。 定时器是我们常见的一种外设,之所以这么常见,原因在于定时器的用途非常广泛。 在STM32所有MCU中都配有定时器,那么你有关注、对比过各系列、各型号MCU中定时器的差异吗? 2 哪些STM32配有LPTIM定时器? 在STM32中,相对较新的MCU部分型号配有LPTIM定时器。 比如:STM32F7、H7高性能MCU,STM32L0、L4低功耗MCU,以及新推出的G0、G4系列中都配有这种LPTI
[单片机]
利用MSP430F5529定时器捕获功能,实现信号周期或频率的测量
// 这个程序利用TIMER A0生成1KHz的方波,从引脚P1.3输出,送到引脚P7.4, // 再利用TIMER B0测量周期。为测试方便,引脚P1.0输出32KHz的ACLK, // 引脚P2.2输出12MHz的SMCLK. // ACLK = LFXT1 = 32kHz; SMCLK = MCLK = 12MHz // // MSP430F5529 // ------------------------- // /|| XT1IN|- // | | | 32kHz // --|RST XT1OUT|- //
[单片机]
STM8单片机ADC采样功能通过定时器触发
在使用STM8单片机的ADC功能时,读取ADC数据时一般有两种方式,一种是通常不断地读取采样标志位,来判断ADC采样是否结束,一种是通过中断的方式来通知系统采样是否结束。 有时候采样ADC数据的时候,需要按照一定的时间间隔,定点的去采样数据。一般使用的方式就是通过定时器定时,然后在定时中断函数中再去读取ADC采样的数据。但是这种方式采样的时间是不固定的,比如进入定时器中断后,ADC采样刚结束,就可以直接使用当前采样到的数据。但是如果运气不好的话,进入定时中断后,ADC采样刚开始,那么此时就需要等到ADC采样结束后,才能使用数据。这样就好导致每次读取ADC数据时还会有随机的一段等到ADC数据的延时。 通常查阅ST
[单片机]
51单片机(十六)—— 定时器0和定时器1寄存器介绍及功能描
这篇文章,我们对51单片机的定时器0和定时器1的寄存器和功能进行介绍。 1 定时器/计数器工作方式寄存器TMOD 定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,TMOD用来确定定时器T0和T1的工作方式及功能选择,单片机复位时,TMOD全部被清0,TMOD寄存器的定义如下。 定时器/计数器工作方式寄存器TMOD 这个寄存器的高4位用来设置定时器T1,低4位用来设置定时器T0。 GATE—门控制位。 GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRx位来控制。 GATE=1,定时器/计数器启动与停止由TCON寄存器中TRx位和外边中断引脚(INT0或INT1)上的
[单片机]
AVR 定时器ICP功能
系统功能 使用AVR内部定时器做1S定时,并使用LED作出简单指示! 硬件设计 关于AVR的I/O结构及相关介绍详见Datasheet,这里仅对作部分简单介绍,下面是AVR的I/O引脚配置表: AVR主控电路图 LED控制电路 软件设计 下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解! /*01010101010101010101010101010101010101010101010101010101010101010101 ---------------------------------------------------------------------- 实验内容:
[单片机]