当前位置: 首页> 教育> 高考 > STM32F1学习笔记(四)—CubeMX定时器中断+平滑滤波

STM32F1学习笔记(四)—CubeMX定时器中断+平滑滤波

时间:2025/7/9 11:17:31来源:https://blog.csdn.net/2303_76872898/article/details/139268145 浏览次数:0次

1、选择时钟源

2、配置定时器

3、业务代码

int main()
{HAL_TIM_Base_Start_IT(&htim1); //定时器1使能HAL_TIM_Base_Start_IT(&htim2); //定时器2使能...
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == htim1.Instance){...//定时器1中断业务}else if(htim-> Instance == htim2.Instance){...//定时器2中断业务}...
}

4、平滑滤波代码

    /* 定时器2配置为0.1s触发一次中断 *//*** @brief 定时器中断的回调函数* @param htim 触发中断的定时器* @retval None*/void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim){if (htim->Instance == htim2.Instance){pwm_sum += pwm_value * 10;   // pwm_sum累加pwm_sum -= pwm_avg;          // pwm_sum减去上次的平均值pwm_avg = pwm_sum * 1.0 / 5; // 更新pwm的平均值pwm_value_final = pwm_avg;   // pwm_value_final的值即为当前pwm的频率pwm_value = 0;               // 将pwm_value清空,重新计数}}/*** @brief 外部中断的回调函数* @param GPIO_Pin 触发中断的引脚* @retval None*/void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){if (GPIO_Pin == PWM_Pin){ // 判断触发引脚是否是定义的引脚pwm_value++;}}
在任意时刻需要使用 pwm 的频率时,只需要使用 pwm_value_final 的值即可

关键字:STM32F1学习笔记(四)—CubeMX定时器中断+平滑滤波

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: