stm32定时器同步(一)

定时器同步有多种功能,本文介绍使用一个定时器作为另一个定时器的预分频器。

所谓预分频,指定时器1输出一个时钟信号,作为定时器2的输入信号。而通过配置定时器2的时基单元,可以将定时器2作为定时器1的一个分频信号。举个例子,定时器1输出10kHZ的时钟,而定时器210分频,也就是输出1kHZ的信号,那我们就称之为**使用一个定时器作为另一个定时器的预分频器。**下面是手册中的示意图,帮助大家理解

主要过程就是定时器1主模式输出TRGO,进入定时器2的ITRx,,在选择为TRGI后选择从模式,进入时基单元,最后就可以获得一个分频后的时钟信号,流程用红笔标出

下面是一个配置代码,主频72MHZ,定时器1 10kHZ,定时器2 1kHZ

cs 复制代码
void TIM1_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

    // 配置定时器1 输出10kHZ
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Prescaler = 7;        
    TIM_TimeBaseStructure.TIM_Period = 899;         
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

    TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);
    TIM_Cmd(TIM1, ENABLE);

}

void TIM2_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

    // 配置定时器2 输出1kHZ
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Prescaler = 0;          // 不使用预分频
    TIM_TimeBaseStructure.TIM_Period = 9;            
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

    // 配置TIM2为从模式,使用外部时钟模式1,使用ITR0作为触发源
    TIM_SelectInputTrigger(TIM2, TIM_TS_ITR0);      
    TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_External1); 
    TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ITR0);

    TIM_Cmd(TIM2, ENABLE);
}
相关推荐
我的老子姓彭28 分钟前
stm32串口hal库
stm32·单片机·嵌入式硬件
爱喝纯牛奶的柠檬31 分钟前
【已验证】STM32F103的MPU6050应用一(驱动篇)
stm32·单片机·嵌入式硬件
是翔仔呐32 分钟前
第10章 串口通信USART全解:轮询/中断/DMA三种收发模式与上位机通信实战
c语言·开发语言·stm32·单片机·嵌入式硬件·学习·gitee
17(无规则自律)1 小时前
深度剖析Linux Input子系统(1):宏观架构与核心原理
linux·嵌入式硬件
lingzhilab1 小时前
零知IDE——STM32驱动ICM20948九轴姿态角解算(上位机演示+数据导出)
stm32·单片机·嵌入式硬件
SUNNYSPY00110 小时前
65R135 -ASEMI超结MOS管TO-220封装
单片机
jacklood11 小时前
基于STM32的车载振动曲线摆件创意设计
stm32·单片机·嵌入式硬件
jomoly11 小时前
星闪NL002开发板测评+匆匆
单片机·嵌入式硬件
17(无规则自律)12 小时前
【Linux驱动实战】:标准的按键控制LED驱动写法
linux·驱动开发·嵌入式硬件
森利威尔电子-14 小时前
森利威尔SL3180替换LM5013 100V降压3.3V 5V 12V恒压芯片
单片机·嵌入式硬件·集成电路·芯片·电源芯片