STM32 通用T2、T3、T4、T5定时器详解

定时器初始化配置

 1 void TIM3_Configuration(void)//1MS
 2 {
 3     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 4
 5         TIM_DeInit(TIM3);//开一下时钟再关闭
 6         /* 设置TIM2CLK 为 72MHZ */
 7     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
 8
 9
10     /* 自动重装载寄存器周期的值(计数值) */
11     TIM_TimeBaseStructure.TIM_Period=1000-1;
12
13     /* 累计 TIM_Period个频率后产生一个更新或者中断 */
14     TIM_TimeBaseStructure.TIM_Prescaler= 71;
15         TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/* 时钟预分频数为72 */
16     TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
17     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
18
19     TIM_ClearFlag(TIM3, TIM_FLAG_Update);
20         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
21         TIM_ARRPreloadConfig(TIM3, ENABLE);
22     TIM_Cmd(TIM3, ENABLE);
23
24 }

NVIC配置

void TIM3_NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure; 

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

正常情况下是先配置好定时器参数设置,再配置NVIC中断-》使能中断。

时间: 2024-10-08 01:32:44

STM32 通用T2、T3、T4、T5定时器详解的相关文章

STM32F103的11个定时器详解(转)

源:STM32F103的11个定时器详解 STM32F103系列的单片机一共有11个定时器,其中:2个高级定时器4个普通定时器2个基本定时器2个看门狗定时器1个系统嘀嗒定时器 出去看门狗定时器和系统滴答定时器的八个定时器列表; 8个定时器分成3个组:TIM1和TIM8是高级定时器TIM2-TIM5是通用定时器TIM6和TIM7是基本的定时器这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式 计数器三种计数模式向上计数模式:从0开

(转)STM32 GPIO 配置之ODR, BSRR, BRR 详解

用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平.管脚对于位写1 gpio 管脚为高电平,写 0 为低电平BSRR 只写寄存器:既能控制管脚为高电平,也能控制管脚为低电平.对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平.写 0 ,无动作BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平.写

spring基于通用Dao的多数据源配置详解【ds1】

spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种方式和资源文件冲突:扫描映射文件的话,SqlSessionFactory的bean名字必须是sqlSessionFactory 他读不到sqlSessioNFactory2或者其他名字,最终解决方法如下: 1.在项目中加入如下类MultipleDataSource.java ? 1 2 3 4 5

Systick定时器详解

Systick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器. Systick定时器常用来做延时,或者实时系统的心跳时钟.这样可以节省MCU资源,不用浪费一个定时器.比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟. Systick定时器就是系统滴答定时器,一个24位的倒计数定时器,计到0时,将从RELOAD寄存器中自动重装载定时初值.只要不把它在SysTick 控制及状态寄存器中的使能位清

Node中的定时器详解

在大多数的业务中,我们都会有一些需求,例如几秒钟实现网页的跳转,几分钟对于后台数据进行清理,node与javascript都具有将代码延迟一段时间的能力.在node中可以使用三种方式实现定时功能:超时时间,时间间隔和即时定时器.虽然有这三种定时器功能但是在平常的业务中使用还是有差别的,下来我们就一起讨论一下这三种定时器. 1.用超时时间来延迟工作 超时定时器用于将工作延迟一个特定的时间数量,当时间到了,回调函数执行,而定时器会消失.(建议:对于只执行一次的工作,使用超时时间). 1秒之后执行my

linux 内核定时器详解

原文摘自:http://www.linux-cn.com/html/linux/kernel/20070412/1886.shtml Linux内核2.4版中去掉了老版本内核中的静态定时器机制,而只留下动态定时器.相应地在timer_bh()函数中也不再通过run_old_timers()函数来运行老式的静态定时器.动态定时器与静态定时器这二个概念是相对于Linux内核定时器机制的可扩展功能而言的,动态定时器是指内核的定时器队列是可以动态变化的,然而就定时器本身而言,二者并无本质的区别.考虑到静

STM32——CAN总线波特率和位时序详解

本人用的单片机是STM32F407,其它型号的单片机类似,可做参考! 一.标准CAN协议位时序概念 由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯.同时,CAN还使用“位同步”的方式来抗干扰.吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常.为了实现这个位同步,CAN协议将每个位的时序分解为四段:SS段.PTS段.PSB1段.PBS2段.同时定义最小的时间单位:Tq,四个段的长度用x个Tq表示,加起来就是一个

Android初级教程启动定时器详解

本案例知识是:后台执行定时任务. Alarm机制: 一.创建LongRunningService类 package com.example.servicebestpractice; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import and

C#元组示例详解

元组的概要: 数组合并了相同类型的对象,而元组合并了不同类型的对象.元组起源于函数编程语言(如F#) ,在这些语言中频繁使用元组.在N盯4中,元组可通过.NET Fmmework用于所有的NET语言..NET 4定义了8个泛型Tuple类和一个静态Tuple类,它们用作元组的工厂.这里的不同泛型Tuple类支持不同数量的元素.例如,Tuple<T1>包含-个元素,Tuple<T1,T2>包含两个元素,以此类推. 1.第一个例子 private Tuple<int, int&g