STM32 定时器

定时器简介

1.STM32的定时器功能十分强大,有 TIME1和 TIME8等高级定时器,也有 TIME2~TIME5等通用定时器,还有 TIME6和TIME7等基本定时器。 2.STM3的通用 TIMx (TIM2、 TIM3、 TIM4和 TIM5)定时器功能包括:   1)16位向上、向下、向上 /向下自动装载计数器( TIMx_CNT)。   2)16位可编程 (可以实时修改 )预分频器 (TIMx_PSC),计数器时钟频率的分频系数为 1~65535之间的任意数值。

  1. 4个独立通道( TIMx_CH1~4),这些通道可以用来作为

        A.输入捕获
        B.输出比较
        C PWM生成 (边缘或中间对齐模式 )
        D.单脉冲模式输出

定时器时间的计算

若使用TIM1,则选择APB2的时钟,将TIM1配成72M ![](在这里插入图片描述

若需要配置66us(T总)

1.配置一个T的时间:72M / (PSC+1) = 1M(先设定为1M,求出PSC的值)

2.T总=(ARR+1)T ,若ARR大于65535,则72M / (PSC+1) = 0.5M,重新计算。

ARR为自动重装值,对于表格中的Counter Period, 量纲M=e6 ,注意单位

![](在这里插入图片描述

配置中断和定时器

配置定时器参数(此处设定时间为1s,TIM1时钟为72M)

1.

![](在这里插入图片描述

配置中断触发

在这里插入图片描述 -然后生成代码

代码编写

1.开启定时器

在这里插入图片描述

/* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim1);//定时器开启
 /* *USER CODE END 2 */

2.编写中断回调函数

在这里插入图片描述

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim==&htim1)
    {
        HAL_GPIO_TogglePin((GPIO_TypeDef *)GPIOA, (uint16_t) GPIO_PIN_8);//一秒进入中断,电平翻转一次
    }
}        //htim是一个指向TIM_HandleTypeDef结构体的指针
/* USER CODE END 4 */
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值