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);
}
相关推荐
竹照煜_ysn4 小时前
蓝桥杯51单片机设计
单片机·嵌入式硬件·51单片机
Electron-er5 小时前
汽车LIN总线通讯:从物理层到协议栈的深度解析
单片机·汽车电子·lin总线·lin总线通讯
Do vis8245 小时前
STM32第十六天蓝牙模块
stm32·单片机·嵌入式硬件
学不动CV了5 小时前
ARM单片机启动流程(二)(详细解析)
c语言·arm开发·stm32·单片机·51单片机
猫猫的小茶馆7 小时前
【STM32】通用定时器基本原理
c语言·stm32·单片机·嵌入式硬件·mcu·51单片机
jingshaoqi_ccc8 小时前
stm32的USART使用DMA配置成循环模式时发送和接收有着本质区别
stm32·单片机·嵌入式硬件
MingYue_SSS11 小时前
开关电源抄板学习
经验分享·笔记·嵌入式硬件·学习
玉树临风江流儿11 小时前
炸鸡派-定时器基础例程
单片机·嵌入式硬件
小宋同学在不断学习12 小时前
stm32-掌握SPI原理(一)
stm32·单片机·spi
is081512 小时前
STM32的 syscalls.c 和 sysmem.c
c语言·stm32·嵌入式硬件