STM32定时器

定时器的工作原理:使用精准的时基,通过硬件的方式,实现定时功能,定时器的核心就是计数器。

定时器的分类:

1.基本定时器(TIM6~TIM7):没有输入输出通道,常用作石基,即定时功能。

2.通用定时器(TIM2-TIM5):具有多路独立通道,可用于输入捕获/输出比较,也可用作石基。

3.高级定时器(TIM1和TIM8):除剧本通用定时器的所有功能外,还具备带死区控制的互补信号输                                                   出,刹车输入等功能(可用于电机控制,数字电源设计等)。

通用定时器介绍:

1.16位向上/向下自动装载计数器。

2.16位可编程预分频器,计数器时钟频率的分频系数为1~65536

3.4个独立通道,这些通道可以作为:

        A.输入捕获

        B.输出比较

        C.PWM生成

        D.单脉冲模式输出

4.可使用外部信号控制定时器和定时器互连

5.发生如下事件时产生中断/DMA

        A.更新:计数器向上/向下溢出,计数器初始化(通过软件或者内部/外部触发)

        B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)

        C.输入捕获

        D.输出比较

        E.支持针对定位的增量(正交)编码器和霍尔传感器电路

        F.触发输入作为外部时钟或者按周期的电流管理

定时器计数模式:

定时器溢出的时间计算公式:

其中TCLK是由

决定的。

 

下面是一个利用定时器中断的点灯案例:

我们在CubeMX中设置好500ms的定时之后,在程序中要重写更新中断回调函数:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)/
 {
	if(htim->Instance==TIM2)
	{
		 HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);//
	}
 }

并在主函数中启动定时器:

    HAL_TIM_Base_Start_IT(&htim2);//我们这里使用的是定时器TIM2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32定时器STM32微控制器中的一个非常重要的模块,它可以用来生成精确的时钟信号,并且可以实现很多不同的功能。 STM32定时器主要分为两种类型:基本定时器和通用定时器。基本定时器只有一个计数器,而通用定时器则有多个计数器,并且支持更多的功能。具体可以根据实际需要选择使用哪种类型的定时器。 在STM32中使用定时器可以通过以下步骤完成: 1. 配置定时器的时钟源和分频系数; 2. 设置定时器计数器的初始值和自动重载值; 3. 开启定时器中断(可选); 4. 启动定时器。 例如,以下是使用STM32的基本定时器TIM6进行定时中断的代码: ```c #include "stm32f10x.h" void TIM6_IRQHandler(void) { // 定时器中断处理函数 } int main(void) { // 使能TIM6的时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); // 配置TIM6的时钟源为内部时钟,分频系数为72 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; TIM_TimeBaseInitStruct.TIM_Prescaler = 72 - 1; TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStruct.TIM_Period = 1000 - 1; TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInit(TIM6, &TIM_TimeBaseInitStruct); // 开启TIM6的更新中断 TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); // 启动TIM6 TIM_Cmd(TIM6, ENABLE); while (1) { // 程序主循环 } } ``` 在上面的代码中,我们使用了STM32的库函数来配置和控制定时器,首先通过RCC_APB1PeriphClockCmd函数使能了TIM6的时钟,然后使用了TIM_TimeBaseInit函数来配置了定时器的时钟源、分频系数、计数器自动重载值等参数,然后开启了定时器的更新中断,并且最后启动了定时器。在定时器中断处理函数中可以编写需要定时执行的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值