stm32中定时器配置和解释

自学留用

定时器中断实现步骤


void TIM3_Int_Init(u16 arr, u16 psc)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
    
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStructure.TIM_Period = arr;
    TIM_TimeBaseInitStructure.TIM_Prescaler = psc;
    
    TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
    
    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
    TIM_Cmd(TIM3,ENABLE);
    
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    
    NVIC_Init(&NVIC_InitStructure);
    
    
}
void    TIM3_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM3,TIM_IT_Update) == SET)
    {
        LED1 =! LED1;
    }
    TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  

}

TIM_TimeBaseInitTypeDef配置

typedef struct
{
u16 TIM_Period;
u16 TIM_Prescaler;
u8 TIM_ClockDivision;
u16 TIM_CounterMode;
} TIM_TimeBaseInitTypeDef;

TDTS和TDTG解释

TDTS为系统时钟周期时长;

TDTG为系统周期时长乘以倍数,这个值用于计算最终死区时间,也叫作步长。
TDTG=TDTS*n

1.为什么需要分频器

例如stm32f407中主频为168MHz,但是定时器为16位定时器(即0~65535)

分频之后

//对于168MHZ的频率,500ms中断一次,这两个参数设置如下:
TIM_Prescaler=16799;   //预分频值
TIM_Period=4999;    //下一个更新事件装入活动的自动重装载寄存器周期的值

   分频16799,用168000000/7200=10000Hz
   此时的周期就是1/10000=0.0001s
   500ms=0.0001s*5000次
   5000-1=4999次
   即通过4999次系统的运行,就是500ms

 

2.TIM_ClockDivision是什么,如何配置

tDTS为tCK_INT的时钟分频因子的倍数

不分割就是说明CK_INT=167/167=1MHz,那么fDTS=1MHZ,tDTS=1us,即分频系数为n,tTDS为tCK_INT的n倍。

常用于读取电平信号持续多长时间才是有效信号。

被采样频率应至少为采样频率的1/2。

3.TIM_OCInit();和TIM_ICInit();解释

TIM_OCInit():用于初始化输出比较通道参数,如输出模式、极性、脉冲宽度等。

 TIM_ICInit():用于初始化输入捕获通道参数,如输入捕获模式、捕获极性、滤波器设置等。

几种定时器介绍(高级定时器、通用定时器、基本定时器)

通用定时器内部结构图

溢出时间计算

常用定时器库函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值