关于STM32CubeMX使用LL库设置PWM输出

本文介绍了如何使用STM32CubeMX配合LL库设置STM32F1的TIM1输出1s周期的PWM信号。通过时钟配置、中断启用以及定时器的LL库函数使用,详细讲解了从HAL库转向LL库的理由和手动修改代码的过程,以实现LED灯1Hz的闪烁效果。
摘要由CSDN通过智能技术生成

HAL和LL库

  HAL是ST为了实现代码在ST家族的MCU上的移植性,推出的一个库,称为硬件抽象层,很明显,这样做将会牺牲存储资源,所以项目最后的代码比较冗余,且运行效率大大降低,运行速度受制于flash的速度,所以很多人设计的时候出现了各种各样的问题。而LL库更精简,他更接近底层,直接操作寄存器来实现,二者在资源消耗上别人已做过比较,https://blog.csdn.net/wping1234/article/details/80197287。个人更看重代码的效率以及精简,所以选择使用LL库。

利用LL配置TIM1输出PWM

  1. 首先进行时钟配置,手中STM32F1的板子外部晶振为8MHz,将系统的主频配置为72MHz,得益于STM32CubeMX的可视化配置设计,时钟的配置变得轻松起来
  2. 使用STM32CubeMX配置定时器TIM1,本次设计PWM的周期为1s,将PWM输出控制LED灯,可以看出明显的效果,因此将TIM1的时钟进行7200的分频,对其计数10000次将会得到1s的定时时间,配置如下:

      

 

 为了可以调节频率,保证调整后的频率可以维持1个周期,开启update中断。也可不开启,可输出PWM。

选择LL库生成代码:

 

  

其他的SWD的配置省略,配置好后使用STM32CubeMX生成代码。

   软件对LL库的支持不及HAL,生成后需要手动修改和添加少量代码。

这两个地方是我手动修改的,自动生成的这一部分存在错误,请注意。

要开启定时器,则要使用LL库的库函数,关于定时器的控制的库函数在以下这个文件,

我们可以打开这个文件,然后打开他的头文件查看里面可用的函数,使用MDK查看不太方便,可以使用notepad++查看,利用notepad++的函数列表很方便,关于TIM的定时器,打开它需要寻找ENABLE这个关键字:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值