wordpress4.7.5,网络推广优化方法,软件商店vivo官方下载,金桥路附近做网站的STM32使用高级定时器输出互补pwm波 前言硬件和软件cubemx新建工程打开Debug模式配置时钟源六大时钟的作用选择Crystal/Ceramic Resonator#xff0c;即使用外部晶振作为HSE的时钟源。 配置时钟配置高级定时器TIM8和通用定时器TIM3这里大概解释一下配置pwm输出用到的几个参数我… STM32使用高级定时器输出互补pwm波 前言硬件和软件cubemx新建工程打开Debug模式配置时钟源六大时钟的作用选择Crystal/Ceramic Resonator即使用外部晶振作为HSE的时钟源。 配置时钟配置高级定时器TIM8和通用定时器TIM3这里大概解释一下配置pwm输出用到的几个参数我们设置的是高级控制和通用定时器通道引脚分布 配置工程路径选MDK-ARM即keil5 生成工程主函数调用案例配置下载器烧录验证输出结果 前言
最近做的一个项目用到stm32网上查了很多资料也踩了很多坑这里记录一下配置的步骤和说明
硬件和软件
硬件使用的是stm32h750vbt6软件用到了stm32cubemx和keil5
cubemx新建工程 打开Debug模式
打开Debug模式方便调试可以忽略不影响代码运行 配置时钟源
在用cube配置时钟源时有下面三个选项 Disable禁用 BYPASS Clock Source旁路时钟源 Crystal/Ceramic Resonator晶体/陶瓷晶振
六大时钟的作用 选择Crystal/Ceramic Resonator即使用外部晶振作为HSE的时钟源。 配置时钟
照着下面的图配置即可最高时钟频率240Mhz
配置高级定时器TIM8和通用定时器TIM3 这里大概解释一下配置pwm输出用到的几个参数
Prescaler 分频系数 Counter Mode 计数模式分为向上和向下 Count Period 计数周期 Interal Clock Division 内部时钟分频 auto-reload preload 自动重装载 TRGO Event Selection 触发事件
Pulse 简单的理解为占空比设置为Count Period 计数周期的一半即可输出占空比50%的方波
其中分频系数和计数周期较为常用可用于设置定时器溢出时间一般来说溢出也代表定时器中断的产生如果配置了中断。溢出时间计算公式如下
上面那个公式中arr为Count Period的设置数值psc为Prescaler的设置数值。 Tclk为定时器挂载的时钟线的频率。对于STM32H750而言最高为240Mhz根据自己的设置有关不记得可以看看自己配置的时钟树。 由下图可知TIM3挂在APB1上TIM8挂在APB2上我们刚刚配置的时钟的TO APB1 Timer clocksClocks和TO APB2 Timer clocksClocks都是240Mhz。 如果我想要产生100HZ方波那么需要配置溢出时间为10ms100HZ的周期为10ms。
则可以选择配置psc为2399arr为999 那么溢出时间公式为 2400*1000/240us10ms 按照上述计算结果进行配置其他参数不用改即可
或者另一种算法 240*10^6 Hz/ (23991) / (9991) 100Hz
我们设置的是
TIM3(240 10^3 KHz) / 20 / 100 120KHz TIM8(24010^6 Hz/ (24000) / (10000) 1Hz
高级控制和通用定时器通道引脚分布 配置工程路径
选MDK-ARM即keil5 生成工程 主函数调用案例
打开main.c
在main函数中添加如下代码 /* USER CODE BEGIN 2 *//* 定时器3通道1输出PWM */HAL_TIM_PWM_Start_IT(htim3,TIM_CHANNEL_1);//占空比百分之50__HAL_TIM_SET_COMPARE(htim3,TIM_CHANNEL_1,12000);/* 定时器8通道1输出PWM */HAL_TIM_PWM_Start_IT(htim8,TIM_CHANNEL_1);/* 定时器8通道1互补输出PWM */HAL_TIMEx_PWMN_Start(htim8, TIM_CHANNEL_1);//占空比百分之50__HAL_TIM_SET_COMPARE(htim8,TIM_CHANNEL_1,50);/* USER CODE END 2 */配置下载器烧录验证 输出结果 和我们预期的结果一致