STMCUBE——8频率计

用TIM4做频率计

1.将TIM4的channel1配置为indirect mode,将channel2配置为direct mode

2.在TIM4的配置选项中做如下图2的配置

3.在程序中添加代码:

     /* USER CODE BEGIN PV */
     /* Private variables ---------------------------------------------------------*/
     /* Captured Value */
     __IO uint16_t            uhIC2Value = 0;
     /* Duty Cycle Value */
     __IO uint16_t            uhDutyCycle = 0;
     /* Frequency Value */
     __IO uint32_t            uwFrequency = 0;
     /* USER CODE END PV */


   /* USER CODE BEGIN 2 */
   /*##-4- Start the Input Capture in interrupt mode ##########################*/
  HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_2);
  /*##-5- Start the Input Capture in interrupt mode ##########################*/
  HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1);
  /* USER CODE END 2 */



/* USER CODE BEGIN 4 */
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
  {
    /* Get the Input Capture value */
    uhIC2Value = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
   
    if (uhIC2Value != 0)
    {
      /* Duty cycle computation */
      uhDutyCycle = ((HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1)) * 100) / uhIC2Value;
      /* uwFrequency computation
      TIM4 counter clock = (RCC_Clocks.HCLK_Frequency)/2 */     
      uwFrequency = (HAL_RCC_GetHCLKFreq())/2 / uhIC2Value;
    }
    else
    {
      uhDutyCycle = 0;
      uwFrequency = 0;
    }
  }
}
/* USER CODE END 4 */



  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
  uint8_t Fre[4];
  Fre[0]=uwFrequency>>24;
  Fre[1]=uwFrequency>>16;
  Fre[2]=uwFrequency>>8;
  Fre[3]=uwFrequency>>0;
  HAL_UART_Transmit_IT(&huart1,Fre,4);
  HAL_Delay(100);
  }
  /* USER CODE END 3 */



1.remap了引脚,因为原来那里接了灯


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值