STM32G431定时器产生PWM(Hal库)

(1)选中需要的板子

(2)配置时钟树:G431的主频最高是170MHZ,蓝桥杯嵌入式教程里设置的是80MHZ,一般来说过低会导致性能的浪费,过高超过170M会导致不稳定。这里设定的是170MHZ

我用的板子上没有外部晶振,所以选用16MHZ的内部晶振,选中内外晶振后通过正上方的Resolve Clock lssues可以快速帮助我们配饰各分频和倍频系数,只需微改变可得到需要的频率。本次用到的输出pwm的是定时器3,挂载在APB2总线上,定时器的频率总是与系统主频一致,这里默认配置即可。

(3)外设配置

第一步:配置GPIO,将PA6和PA7的模式分别设置为TIM3_CH1和TIM3_CH2

第二步:配置SYS、

第三步:配置TIM3

时钟选择内部时钟,通道选择如图,其他默认失能

配置参数设置:

这里简单说一下PWM(脉冲宽度调制)的原理:在具有惯性的系统中,通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常用的领域有电机,舵机的控速。可能说的有点玄乎,一句话概括一下就是通过设置一个叫做占空比的参数,可以随心所欲得到一个0-3.3V之间的输出电压。

PWM的参数有3个,频率,占空比,还有分辨率。

频率=定时器时钟频率/PSC+1/ARR+1,一般在几KHZ为佳

占空比=CCR+1/ARR+1,直接影响输出的模拟电压,控制转速等,如当占空比等于0.5时,输出的电压是3.3*0.5=1.15V

分辨率:1/(ARR+1),占空比变化的步距,值越小,可调控的值越精确,但是一般情况下不用特殊设置

PWM模式有1和2两种,均属于输出比较的模式,这里采用PWM1,PSC给17000-1,ARR给100-1,使能自动重装载,CCR初始值给50,至于其他的NVIC,DMA等,只对输出PWM来说都用不上,无需设置。

之后便在Cubemax中配置完了产生pwm所需的所有基础,生成文件即可

(4)keil里调用初始化函数

除HAL_TIM_PWM_start()外,生成MDK文件时编译器会自动帮我们调用各个初始化函数。因此千万不要忘记主动写上HAL_TIM_PWM_start(),我就因为漏了这个函数找了好久的bug

(5)如何随心所欲的更改输出电压的值

在初始化中设置完CCR的值之后,占空比会保持不变,如果我们想改变输出电压即占空比的值,只能改变CCR的值,hal库为我们封装好了函数:__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_x,n); 结尾提一句,烧录完程序之后一定要重启,断电再上电或者按板子上的RST键都可以,不然程序是无法正常运行的

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
STM32F407ZGT6中,PWM(脉冲宽度调制)模式可以通过定时器和比较器来实现。根据引用\[1\],PWM模式1和PWM模式2的工作原理如下: - PWM模式1:只要定时器的计数值(TIMx_CNT)小于比较器的值(TIMx_CCR1),通道1就处于有效状态,否则为无效状态。 - PWM模式2:只要定时器的计数值(TIMx_CNT)小于比较器的值(TIMx_CCR1),通道1就处于无效状态,否则为有效状态。 在STM32F407ZGT6中,可以通过配置定时器的相关寄存器来设置PWM模式。引用\[2\]提供了一个示例,展示了如何配置定时器10的捕获比较通道1的输出比较模式为PWM模式1。具体配置步骤如下: 1. 清除CCMR1寄存器的位0和位1:TIM10->CCMR1 &= ~(3<<0); 2. 设置CCMR1寄存器的位1和位2:TIM10->CCMR1 |= 1<<1; TIM10->CCMR1 |= 1<<2; 3. 设置CCMR1寄存器的位4-6为6:TIM10->CCMR1 |= 6<<4; 这样就完成了定时器10的PWM模式1的配置。 另外,如果需要处理定时器10的捕获比较中断,可以编写一个中断处理函数。引用\[3\]提供了一个示例中断处理函数的代码,用于处理定时器10的捕获比较中断。在该函数中,如果检测到定时器10的状态寄存器(TIM10->SR)的位1被置位,就清除该位。 希望以上信息对您有所帮助。 #### 引用[.reference_title] - *1* *2* *3* [stm32(十二)通用定时器&输出PWM](https://blog.csdn.net/qq_41399894/article/details/100851832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值