/**

  • @brief 初始化输入捕获模块

  • @note 使用TIM3的通道1进行输入捕获,捕获引脚为PA6

  •     TIM3时钟频率为72MHz,预分频系数为72,计数器模式为向上计数
    
  •     自动重装载寄存器ARR的值为65535,输入捕获预分频器为1
    
  •     输入捕获触发极性为上升沿,输入捕获滤波器为15个连续采样后平均值
    
  •     从TIM3通道1的输入引脚进行输入捕获,重置计数器及更新寄存器
    
  • @param None

  • @retval None */ void IC_Init(void) { // 使能TIM3和GPIOA的时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    // 配置PA6为上拉输入模式 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置TIM3为内部时钟源 TIM_InternalClockConfig(TIM3);

    // 配置TIM3的计数器和自动重装载寄存器 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1; //ARR TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; //PSC TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);

    // 配置TIM3的输入捕获通道 TIM_ICInitTypeDef TIM_ICInitStructure; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICFilter = 0xF; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInit(TIM3, &TIM_ICInitStructure);

    // 配置TIM3的输入捕获触发源和从模式 TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);

    // 使能TIM3 TIM_Cmd(TIM3, ENABLE); }

C语言函数注释:输入捕获模块初始化 (IC_Init)

原文地址: https://www.cveoy.top/t/topic/nE6Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录