【STM32】HAL库输入捕获测占空比

系列文章目录

【STM32】HAL库 新建MDK工程

【STM32】HAL库 串口轮询发送

【STM32】HAL库 定时器中断

【STM32】HAL库 PWM驱动LED呼吸灯

【STM32】HAL库 定时器外部时钟

【STM32】HAL库输入捕获测频率


前言

使用输入捕获测占空比

一、STM32CubeMX设置

一个直接模式,一个间接模式

在这里插入图片描述
一个上升沿,一个下降沿
在这里插入图片描述

二、代码

HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
HAL_TIM_IC_Start (&htim3, TIM_CHANNEL_1);
HAL_TIM_IC_Start (&htim3, TIM_CHANNEL_2);
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		printf("Freq:%dHz\r\n",1000000 / (HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1) + 1));
		printf("Duty:%d\%%",(HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2) + 1) * 100 / (HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1) + 1));
		HAL_Delay(500);
  }
  /* USER CODE END 3 */
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!关于STM32 HAL的PWM输入捕获功能,我可以给你一些基本的介绍。 在STM32中,PWM输入捕获是一种用于量外部信号的功能。通过配置PWM输入捕获,你可以量一个PWM信号的频率、比或者脉冲宽度。 首先,你需要选择一个可用的定时器和通道来进行PWM输入捕获。然后,使用HAL的函数来配置定时器和通道,并启用输入捕获模式。 以下是一个简单的示例代码来实现PWM输入捕获: ```c #include "stm32f4xx_hal.h" TIM_HandleTypeDef htim3; void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM3) { uint32_t captureValue = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); // 读取捕获的值 // 进行处理或者显示 } } int main(void) { HAL_Init(); SystemClock_Config(); __HAL_RCC_TIM3_CLK_ENABLE(); htim3.Instance = TIM3; htim3.Init.Prescaler = 0; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 0xFFFF; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_IC_Init(&htim3); TIM_IC_InitTypeDef sConfigIC; sConfigIC.ICPolarity = TIM_ICPOLARITY_RISING; sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; sConfigIC.ICFilter = 0; HAL_TIM_IC_ConfigChannel(&htim3, &sConfigIC, TIM_CHANNEL_1); HAL_TIM_IC_Start_IT(&htim3, TIM_CHANNEL_1); while (1) { // Your code here } } ``` 在上述代码中,我们首先初始化定时器TIM3,并配置通道1为输入捕获模式。然后,在主循环中你可以添加自己的代码逻辑。 需要注意的是,在使用PWM输入捕获之前,你需要根据你的需求进行适当的配置和调整代码。 希望能对你有所帮助!如果有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值