stm32定时器从模式:门控模式

门控模式是定时器三种从模式之一,在这种模式下,计数器的计数操作由某个输入信号(通常是一个外部引脚)来控制。计数器只有在这个输入信号处于某种特定状态(如高电平或低电平)时才会进行计数,当输入信号的状态变化时(例如从低电平变为高电平),计数器会停止计数。

我们需要做三件事:配置输入源,使能计数器以及让相关信号源在正常工作的01位

图中可以看出TI1在置0时是有效的触发输入电平,而光光TI1置0还是不行的,还需要使能计数器。

当计数器使能或者失能时都会置位SR计数器的TIF位。

在图中我们也不难看出即使计数器使能或者失能,还是离计数器真正开始计数或停止计数有一段延时,这个取决于于TI1输入端的重同步电路。而重同步电路是用于同步外部输入信号和内部时钟的,这个硬件问题是无法避免的

void TIM2_Config(void) {
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    
    // 配置 TIM2 基本时间基准
    TIM_TimeBaseStructure.TIM_Period = 0xFFFF; 
    TIM_TimeBaseStructure.TIM_Prescaler = 0; 
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
    
    // 配置 TIM2 输入捕获通道1
    TIM_ICInitTypeDef TIM_ICInitStructure;
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; 
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 
    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
    TIM_ICInitStructure.TIM_ICFilter = 0x00; 
    TIM_ICInit(TIM2, &TIM_ICInitStructure);
    
    // 配置 TIM2 为门控模式
    TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Gated); 
    TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1); // 选择 TI1FP1 作为触发源
    
   
    TIM_Cmd(TIM2, ENABLE);
}

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值