STM32通用定时器的使用

这篇具有很好参考价值的文章主要介绍了STM32通用定时器的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

##详细信息看开发攻略,下面只讲解如何配置

##配置步骤

(1)使能定时器时钟 本章定时器实验,我们使用的是通用定时器 TIM4,我们知道 TIM4 是挂接在 APB1 总线上的,所以可以使用 APB1 总线时钟使能函数来使能 TIM4

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能 TIM4 时钟

(2)初始化定时器参数,包含自动重装值,分频系数,计数方式等 要使用定时器功能,必须对定时器内相关参数初始化

. voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseI nitStruct);

(3)设置定时器中断类型,并使能 对定时器中断类型和使能设置的函数如下:

.void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewSta te);

(4)设置定时器中断优先级,使能定时器中断通道 在上一步我们已经使能了定时器的更新中断,只要使用到中断,就必需对 NVIC 初始化,NVIC 初始化库函数是 NVIC_Init(),这个在前面讲解 STM32 中断 时就已经介绍过,不清楚的可以回过头看下。

(5)开启定时器 前面几个步骤已经将定时器配置好,但还不能正常使用,只有开启定时器了 才能让它正常工作,开启定时器的库函数如下: 1. void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

(6)编写定时器中断服务函数 最后我们还需要编写一个定时器中断服务函数,通过中断函数处理定时器产 生的相关中断。定时器中断服务函数名在 STM32F1 启动文件内就有,TIM4 中断 函数名如下: TIM4_IRQHandler

##代码模块

time.h

#ifndef _time_H
#define _time_H
#include "system.h"

void TIM4_Init(u16 per, u16 psc);



#endif

time.c

#include "time.h"
#include "led.h"

void TIM4_Init(u16 per, u16 psc)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;//设置定时器中断优先级,使能定时器通道
	
	TIM_TimeBaseInitStructure.TIM_Period=per;//周期值(与预分频值决定计时时间)
	TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//预分频值
	//72000k/预分频值+1=Nk,1k=0.5ms,Nk=1/N ms,再乘周期值等于计数值
	TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;//时钟分频因子
	TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//计数模式
	
	NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//抢占式优先级,按自己需求配置
	NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//响应式优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
	
	NVIC_Init(&NVIC_InitStructure);
	
	TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE );//设置定时器中断类型
	TIM_ClearITPendingBit(TIM4, TIM_IT_Update );//清除中断标志
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStructure);
	TIM_Cmd(TIM4, ENABLE);
}

void TIM4_IRQHandler()
{
	if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET)
	{
		LED2=!LED2;
	}
	TIM_ClearITPendingBit(TIM4, TIM_IT_Update );//清除中断标志,为下一次中断提供条件
}

main.c文章来源地址https://www.toymoban.com/news/detail-499966.html

#include "stm32f10x.h"
#include "led.h"
#include "system.h"
#include "SysTick.h"
#include "beep.h"
#include "key.h"
#include "exti.h"
#include "time.h"
int main()
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置优先级分组
	u8 i=0;
  SysTick_Init(72);
	LED_Init();
	TIM4_Init(1000, 36000-1);//0.5ms计数1000次,0.5s
	while(1)
	{
	
		i++;
		if(i%20==0)
			LED1=!LED1;//指示灯亮提示机器正在运行
		delay_ms(10);
		
	}
}

到了这里,关于STM32通用定时器的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32标准库通用定时器PWM生成

    STM32通用定时器生成的PWM波形周期为 (STM32主频)/((TIM_Period+1)*(TIM_Prescaler+1)) TIM_OCMode:PWM的模式,有两种模式:TIM_OCMode_PWM1和TIM_OCMode_PWM2 TIM_OCMode_PWM1。向上计数时,一旦TIMx_CNT TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT TIMx_CCR1时通道1为无效电平(

    2024年03月09日
    浏览(62)
  • STM32 第20讲 通用定时器(简介/框图/时钟源)

    对于STM32F407有10个通用定时器,TIM2 ~ TIM5 和 TIM9 ~ TIM14。 主要特性: 16位递增、递减、中心对齐计数器(计数值:0~65535) 16位预分频器(分频系数:1~65536) 可用于触发DAC、ADC 在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求 4个独立通道,可用于:输入捕

    2024年02月09日
    浏览(39)
  • STM32CubeMX教程8 TIM 通用定时器 - 输出比较

    开发板(STM32F407G-DISC1) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 逻辑分析仪nanoDLA 使用STM32CubeMX软件配置STM32F407 通用定时器的输出比较通道 ,并将其输出到四个LED灯引脚实现LED灯流水灯效果 STM32F407的定时器通道均可以实现输出比较功能, 输出比较功

    2024年02月03日
    浏览(77)
  • stm32f407关于通用定时器各种函数——PWM(二)

            定时器产生PWM:在计数器频率固定时,PWM 频率由 自动重载寄存器(TIMx_ARR) 的值决定,其占空比由 捕获/比较寄存器(TIMx_CCRx) 的值决定         定时器工作在递增计数模式,纵轴是计数器的计数值 CNT,横轴表示时。当 CNT=CCRx 时,IO 输出高电平(逻辑 1);

    2024年02月08日
    浏览(82)
  • STM32CubeMX教程6 TIM 通用定时器 - 生成PWM波

    开发板(STM32F407G-DISC1) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 逻辑分析仪nanoDLA 使用STM32CubeMX软件配置STM32F407 通用定时器生成可变占空比PWM波形,并将其输出到LED灯引脚实现呼吸灯效果 STM32F407有10个通用定时器,其中TIM2、TIM3、TIM4和TIM5有4个捕获

    2024年02月03日
    浏览(42)
  • STM32学习笔记 & 通用定时器TIM3~TIM5 13

    通用定时器是一个通过可编程预分频器驱动的 16 位自动装载计数器构成。 它适用于多种场合,包括测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波形 ( 输出比较和PWM)。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间

    2024年02月05日
    浏览(99)
  • 【STM32】定时器详细学习

    定时器介绍 HAL库外设模块设计方法 外设通用接口函数设计 定时/计数功能 时基单元 外部脉冲计数 定时器的核心就是一个计数器模块,可以进行加一或减一计数。每出现一个计数信号,计数器的值就自动加一或减一。当计数值从0递增到最大值或者从最大值递减到0时,定时器

    2024年02月05日
    浏览(36)
  • stm32f407探索者开发板(二十二)——通用定时器基本原理讲解

    STM32F40x系列总共最多有14个定时器 三种(4)STM32定时器区别 STM3 F4 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: 16 /32 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系

    2024年02月12日
    浏览(40)
  • STM32 HAL库 通用定时器介绍及相关应用例程 定时器中断 输出PWM (点亮LED呼吸灯、输出PWM、输入捕获) CubeMX

    (部分图引自于ATK) 前情提要(基本定时器) 点此进入 通用定时器类别 通用定时器和基本定时器相比大致的工作方式是相似的,不过通用定时器比基本定时器多了一些很好用的功能,比如: 外部输入捕获 输出比较 输出PWM 时钟源 CubeMX为我们提供了配置时钟的非常方便的工

    2024年04月15日
    浏览(82)
  • 最详细STM32,cubeMX 定时器

    这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。 实验开发板:STM32F103C8T6。 所需软件:keil5 , cubeMX 。 实验目的:了解 cubeMX 定时器 的配置和使用。 实验:使用定时器控制 led 闪烁。 STM32的定时器是用于时间测量和事件生成的复杂工具。可以使用内部或外部时钟源。时

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包