stm32定时器从模式:触发模式

触发模式是定时器三种从模式之一,输入端选中某一事件可以触发定时器开始工作,流程十分简单大家配合图看理解更为容易

TI2一个上升沿作为触发事件,使能计数器。而TI2上升沿和计数器启动计数之间的延时,取决于TI2输入端的重同步电路。触发后会对TIF置一个标志位。

而本篇文章介绍的重点是外部时钟模式2 + 触发模式

我们平常计数器使用的时钟是内部时钟,而所以要通过一系列分频操作进行准确计数,而当我们希望能利用外部时钟作为时钟信号源,就可以利用外部时钟模式2 + 触发模式这一方法。

因为通过外部时钟模式2我们可以获得外部ETR引脚的信号,再利用从模式的触发模式这一方法可以以外部时钟信号,加之内部信号TI2进行计数。

实际效果如图,仍然是需要TI1的一个电平跳变才能开始计数器计数。

手册中对相关寄存器配置有三步:配置外部触发电路、选择输入捕获源及时钟处理、配置触发模式

当然我们还是使用标准库来完成这一操作

void TIM_Config(void) {
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_ICInitTypeDef TIM_ICInitStructure;
    TIM_ETRClockMode2Config(TIMx, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0x00);

    // 时基单元
    TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
    TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
    TIM_TimeBaseStructure.TIM_Prescaler = 0;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);

    // TI1
    TIM_ICStructInit(&TIM_ICInitStructure);
    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
    TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
    TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
    TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
    TIM_ICInitStructure.TIM_ICFilter = 0x00;
    TIM_ICInit(TIMx, &TIM_ICInitStructure);

    // 配置触发模式
    TIM_SelectInputTrigger(TIMx, TIM_TS_TI1FP1);
    TIM_SelectSlaveMode(TIMx, TIM_SlaveMode_Trigger);
    TIM_SelectMasterSlaveMode(TIMx, TIM_MasterSlaveMode_Enable);


    TIM_Cmd(TIMx, ENABLE);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值