XYBGJJ 2022-11-27 15:32 采纳率: 0%
浏览 16

STM32输入捕获只能捕获一次上升沿,捕获不到下降沿

学习野火stm32 HAL库的tim5 ch1输入捕获功能,代码和例程代码一样,按下PA0控制的按键,只能进入中断捕获到一次上升沿,松开按键捕获不到下降沿,中断服务函数配置了下降沿的情况,捕获不到下降沿,没办法执行else之后的语句,这该怎么办呢

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  TIM_ICUserValueStructure .usPeriod ++;
    printf("Update %d! \r\n",TIM_ICUserValueStructure .usPeriod);     //每次中断打印一次值
}
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  TIM_IC_InitTypeDef sConfigIC;
  if ( TIM_ICUserValueStructure .ucStartFlag == 0 )
  {
    LED1_TOGGLE;       
    __HAL_TIM_SET_COUNTER(htim,0); // 清零定时器计数
    TIM_ICUserValueStructure .usPeriod = 0;            
    TIM_ICUserValueStructure .usCtr = 0;
    // 配置输入捕获参数,主要是修改触发电平
    sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;//这里设置了捕获下降沿,但是没有触发
    sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
    sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
    sConfigIC.ICFilter = 0;
    HAL_TIM_IC_ConfigChannel(&htim5, &sConfigIC, TIM_CHANNEL_1);
    // 清除中断标志位
    __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1);
    // 启动输入捕获并开启中断
    //    HAL_TIM_Base_Start_IT(&htim5); 
    HAL_TIM_IC_Start_IT(&htim5,TIM_CHANNEL_1);    
    TIM_ICUserValueStructure .ucStartFlag = 1;            
    //    printf("ucStartFlag是 %d! \r\n",TIM_ICUserValueStructure .ucStartFlag);
  }        
  else
  {
    //    printf("ucStartFlag是 %d! \r\n",TIM_ICUserValueStructure .ucStartFlag);//执行不到else之后的代码
    LED2_TOGGLE;
    // 获取定时器计数值
    TIM_ICUserValueStructure .usCtr = HAL_TIM_ReadCapturedValue(&htim5,TIM_CHANNEL_1);
    // 配置输入捕获参数,主要是修改触发电平
    sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
    sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
    sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
    sConfigIC.ICFilter = 0;
    HAL_TIM_IC_ConfigChannel(&htim5, &sConfigIC, TIM_CHANNEL_1);
    // 清除中断标志位
    __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); 
    // 启动输入捕获并开启中断
    HAL_TIM_IC_Start_IT(&htim5,TIM_CHANNEL_1);    
    TIM_ICUserValueStructure .ucStartFlag = 0;            
    TIM_ICUserValueStructure .ucFinishFlag = 1;    
  }
}
  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 创建了问题 11月27日

      悬赏问题

      • ¥15 SQL查询一个表格的数据
      • ¥20 PCL库处理梯子点云获取其几何参数
      • ¥30 医疗资料ROI mask转YOLO的bounding box
      • ¥15 docx4j word转pdf
      • ¥15 MATLAB-GUI数据图表
      • ¥15 Qt Vs2017使用Charts异常
      • ¥15 将位图选入内存DC失败,但没有出错信息
      • ¥20 如何从 .html url 启动/激活 .py 文件(sql debug)
      • ¥15 c#调用soap出错,soapui中可以
      • ¥100 CBIS-DDSM kaggle 资料处理