打印
[其他ST产品]

stm32学习笔记-定时器

[复制链接]
楼主: 米多0036
手机看帖
扫描二维码
随时随地手机跟帖
21
米多0036|  楼主 | 2023-12-22 16:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
基本定时器框图

使用特权

评论回复
22
米多0036|  楼主 | 2023-12-22 16:03 | 只看该作者
时钟源:只有一个时钟来源,是CK_INT内部时钟,从APB1总线通过倍频器得来。

使用特权

评论回复
23
米多0036|  楼主 | 2023-12-22 16:03 | 只看该作者
控制器:包括触发控制器,控制器。
触发控制器,可以触发DAC。
控制器,可以控制定时器的时钟来源,复位,使能,计数。

使用特权

评论回复
24
米多0036|  楼主 | 2023-12-22 16:03 | 只看该作者
时基单元:包括PSC预分频寄存器,CNT计数器寄存器,自动重装载寄存器, ARR影子寄存器。
PSC预分频寄存器:可以对得到的CK_PSC时钟频率再次分频,以得到自己想要的计数器时钟CK_CNT。(CK_CNT=CK_PSC/(PSC+1),除以 PSC+1 使为了防止出现除以0的错误)
CNT计数器寄存器:在计数器时钟的驱动下开始计数,在脉冲到来后+1或者-1。
ARR自动重装载寄存器:在计数器寄存器溢出之后,对其进行重新装载计数的值。
影子寄存器:仔细观察,功能框图上,PSC预分频寄存器、ARR自动重新装载寄存器都有一个影子。影子寄存器起到一个缓冲的作用。用户定义值->寄存器->影子寄存器->产生作用。即我们定义的值不会立马产生作用,而是在溢出中断来临后再产生作用。其控制位在TIMx_CR1:APRE。一般我们很少使用这个寄存器。

使用特权

评论回复
25
米多0036|  楼主 | 2023-12-22 16:08 | 只看该作者
三、通用定时器(TIM2~TIM5)简介。
主要特性
计数器16bit(0~65535),计数模式有向上计数,向上计数,向上/向下计数。
时钟来自PCLK1,为72M,可实现1~65535分频。
有4个独立通道(TIMx_CH1~TIMx_CH4),这些通道可以用来作为输入捕获,输出比较,PWM生成,单脉冲模式输出。

使用特权

评论回复
26
米多0036|  楼主 | 2023-12-22 16:08 | 只看该作者
通用定时器框图

使用特权

评论回复
27
米多0036|  楼主 | 2023-12-22 16:08 | 只看该作者
时钟源:
·内部时钟(CK_ INT)
·外部时钟模式1:外部输入脚(TIx)
·外部时钟模式2:外部触发输入(ETR)
·内部触发输入(ITRx):使用一-个定时器作为另–个定时器的预分频器,如可以配置–个定时器Timer1而作为另一个定时器Timer2的预分频器。

使用特权

评论回复
28
米多0036|  楼主 | 2023-12-22 16:09 | 只看该作者
控制器
·触发控制器:用来片内外设输出一个触发信号,如作为其他定时器的时钟,触发DAC/ADC的转换
·从模式控制器:控制计数器的复位,使能,向上/向下,计数。
·编码器接口:不清楚

使用特权

评论回复
29
米多0036|  楼主 | 2023-12-22 16:09 | 只看该作者
时基单元:
同基本定时器,略

使用特权

评论回复
30
米多0036|  楼主 | 2023-12-22 16:09 | 只看该作者
输入捕获
其功能大概有:捕获输入信号的上升沿,下降沿,双边沿。获取输入信号的频率,占空比。
有4个输入通道,分别对应到不同的GPIOI口。(可以通过映射,把通道映射到不同的GPIO口)

使用特权

评论回复
31
米多0036|  楼主 | 2023-12-22 16:09 | 只看该作者

使用特权

评论回复
32
米多0036|  楼主 | 2023-12-22 16:09 | 只看该作者
输出比较
有4个输出通道,略。

使用特权

评论回复
33
米多0036|  楼主 | 2023-12-22 16:09 | 只看该作者
五、相关的配置寄存器
具体参考中文手册。

使用特权

评论回复
34
米多0036|  楼主 | 2023-12-22 16:10 | 只看该作者

使用特权

评论回复
35
米多0036|  楼主 | 2023-12-22 16:10 | 只看该作者
六、定时器中断编程
通过配置定时器2的相关配置寄存器,实现1s产生一次中断,改变led1的状态。通过开发板上的led灯观察效果。
思路:

使能定时器时钟
配置定时器的相关参数:预分频系数,计数方式,计数值。
配置定时器中断优先级,并使能定时器中断
使能定时器,开始计数
编写中断服务函数

使用特权

评论回复
36
米多0036|  楼主 | 2023-12-22 16:10 | 只看该作者
对应使用的库函数如下:

RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
使能定时器时钟,定时器默认时钟为系统内部时钟。

使用特权

评论回复
37
米多0036|  楼主 | 2023-12-22 16:10 | 只看该作者
TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct)
配置定时器的相关参数

使用特权

评论回复
38
米多0036|  楼主 | 2023-12-22 16:10 | 只看该作者
TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)
用来使能所需的定时器中断

使用特权

评论回复
39
米多0036|  楼主 | 2023-12-22 16:11 | 只看该作者
NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
配置定时器中断优先级

使用特权

评论回复
40
米多0036|  楼主 | 2023-12-22 16:11 | 只看该作者
TIM_Cmd()
定时器使能

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则