STM32的定时器的使用

一,基本定时器的使用(定时1S的时间LED翻转一次),需要设置的关键的参数

1,分频系数  如果主频是72M,那么一般设置72  那么没1/71M 时间就累加一次

2,自动重装载寄存器的值  这里设置1000  那么更新中断的频率就是    1000HZ,中断周期就是1MS

二,高级定时器的输入捕捉(高级定时器)

捕捉中断

在上面的宏定义里面,我们可以算出计数器的计数周期为 T=72M/(1000*72)=1MS ,这 个是定时器在不溢出的情况下的最大计数周期,也就是说周期小于 1ms PWM 信号都可 以被捕获到,转换成频率就是能捕获到的最小的频率为 1KHZ 。所以我们要根据捕获的 PWM 信号来调节 ADVANCE_TIM_PERIOD ADVANCE_TIM_PSC 这两个宏。
 
最小频率也对,如果发生了更新中断就不好计算频率和占空比了
 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32定时器是该系列微控制器中的重要组成部分,它通常用于计时、计数、PWM信号生成、输入捕获等功能。STM32定时器有基本定时器、通用定时器和高级控制定时器等类型,不同的定时器功能有所不同。 使用STM32定时器的基本步骤如下: 1. 配置时钟源:首先需要配置定时器的时钟源,确保定时器可以正常工作。通常这涉及到启动定时器的时钟(APBx上的定时器时钟使能)。 2. 定时器初始化:通过定时器的控制寄存器来配置定时器的工作模式、预分频值、自动重载值等参数。预分频值决定了定时器计数的频率,而自动重载值则决定计数的范围。 3. 中断或事件配置(可选):如果需要定时器产生中断或用于事件触发,还需要配置相应的中断使能,并且在中断服务程序中处理定时器溢出等事件。 4. 启动定时器:最后,使能定时器计数。如果之前配置了中断,当定时器达到设定条件时(比如溢出或匹配到预设值),会触发中断。 下面是一个简化的代码示例,展示如何在STM32中配置和启动一个基本的定时器: ```c // 假设使用的是STM32的HAL库 #include "stm32f1xx_hal.h" // 定时器初始化函数 void TIM3_Init(void) { // 使能TIM3时钟 __HAL_RCC_TIM3_CLK_ENABLE(); // 定时器句柄声明 TIM_HandleTypeDef htim3; // 定时器基本配置 htim3.Instance = TIM3; htim3.Init.Prescaler = 0xFFFF; // 设置预分频值 htim3.Init.CounterMode = TIM_COUNTERMODE_UP; // 向上计数模式 htim3.Init.Period = 0xFFFF; // 设置自动重载值 htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; // 设置时钟分频因子 HAL_TIM_Base_Init(&htim3); // 启动定时器 HAL_TIM_Base_Start(&htim3); } // 主函数中调用初始化函数 int main(void) { // HAL库初始化 HAL_Init(); // 配置系统时钟 SystemClock_Config(); // 初始化定时器 TIM3_Init(); // 主循环 while (1) { // 其他任务... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值