0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于LL库实现STM32U5 LPTIM功能

茶话MCU 来源:茶话MCU 2024-01-07 14:12 次阅读

有人打算使用STM32U5系列片内LPTIM做低功耗模式唤醒。基于STM32 LL库组织代码,折腾几天后似乎连中断都进不了,想找找是否有现存LL库例程可以参考。

我没有在STM32U5现有固件库里找到基于LL库的LPTIM驱动例程。我之前也没有基于LL库编写过针对STM32U5系列的LPTIM驱动代码。我尝试着写了一个演示代码,还算顺利。可以正常工作、可以产生定时器相关中断。从使用CubeMx工具进行图形化配置开始,然后添加用户代码。我这里将相关操作过程分享出来,供有需要的人参考。

我使用到了LPTIM1的两路PWM输出,同时开启了LPTIM1的更新中断和通道1的比较中断。

先做LPTM1的时基参数和PWM输出配置:

f91552ca-ad22-11ee-8b88-92fbcf53809c.png

因为要使用更新中断和比较中断,在CubeMx里记得做LPTIM1的NVIC相应使能配置。

f919b450-ad22-11ee-8b88-92fbcf53809c.png

创建工程后,添加如下基于LL库的用户代码:

f91d8382-ad22-11ee-8b88-92fbcf53809c.png

进行编译、调试后即可看到输出结果,在中断里打断点也可以感受到中断的产生。

f9217488-ad22-11ee-8b88-92fbcf53809c.png

后来,我又使用STM32G4开发板,基于LL库组织了针对LPTIM1的PWM及相关中断的实现代码。照样使用STM32CubeMx进行配置,开启更新中断、实现1路PWM输出。这样也一并分享出来供参考。

f9255486-ad22-11ee-8b88-92fbcf53809c.png

f928f866-ad22-11ee-8b88-92fbcf53809c.png

f92cb56e-ad22-11ee-8b88-92fbcf53809c.png

使用LL库组织代码,一方面可以让我们对硬件操作更亲近、更直接,另一方面,也可以降低使用者对C语言知识把握度的要求,至于其它方面的考量,比方代码效率、代码大小等,恐怕要结合具体应用来评估。或许对于很多人来说,选择LL库还是HAL库主要是看用哪个对自己更方便、更符合自己的喜好等。不过,基于LL库来组织代码,就要求我们对硬件原理,寄存器定义、配置时序,有着更清晰、更细节的把握,否则哪怕几行代码也可能会被狠狠地折腾一番。对于上面功能,如果使用HAL库的话,通过CubeMx配置完成后,用户只需调用一行库函数调用代码即可完成,其中要注意的地方,HAL库代码大多帮我们考虑到并做好了。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348755
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66771
  • HAL库
    +关注

    关注

    1

    文章

    112

    浏览量

    5878

原文标题:基于LL库实现STM32U5 LPTIM 功能的代码演示

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    盘点那些硬件+项目学习套件:STM32U5单片机开发板及入门常见问题解答

    第一阶段:STM32入门及项目实战: STM32U5开发板入门学习资料已全部更新上线,涉及基础入门+项目实战的完整学习,包括基于HALSTM32U5开发(从入门到提高)、基于To
    发表于 02-19 16:59

    【NUCLEO-L476RG LL开发】STM32LL】开发使用指南

    下载地址:http://pan.baidu.com/s/1c0wjL5m 一楼二楼是具体使用方法。 已完,上传文档和工程模板: STM32 LL使用指南.pdf
    发表于 07-02 03:03

    STM32U5 LPTIM无法退出STOP2模式有什么建议吗

    大家好,我正在尝试使用 STM32U575 进入 STOP2 模式并使用 LPTIM1 比较匹配退出它。LPTIM1 由 LSE 提供时钟,因此它应该仍在 STOP2 模式下工作。这是我在主要
    发表于 12-01 06:23

    STM32U5系列多功能数字滤波器的声音捕获

    MDF(多功能数字滤波器)是专用于样品采集的高性能外设,可用在STM32U5系列微控制器中。它对音频和语音捕获或任何提供需要滤波和抽取的数字信号,例如电机控制和计量。
    发表于 12-02 07:03

    为什么在X-CUBE-LPUART中找不到关于STM32U5项目

    根据应用说明,它说 X-CUBE-LPUART 支持 STM32U5。我试图在 LPBAM 中找到 LPUART 接收的示例,但我找不到任何示例。Cube IDE 有一个示例,但 LPBAM 模式仅
    发表于 12-02 07:41

    如何使用stm32cubeMX为STM32U5生成的代码添加FreeRTOS?

    根据我在互联网上的搜索,我发现至少有 3 种解决方案可以在使用 stm32cubeMX 为 STM32U5 生成的代码之上添加 FreeRTOS ...1 - 从freertos.org或其 GIT
    发表于 12-09 07:32

    请问一下CubeMX是否支持STM32U5的freeRTOS呢?

    请问一下CubeMX是否支持STM32U5的freeRTOS呢?
    发表于 12-22 06:58

    请问STM32U5的USB如何在STM32CubeMX上直接配置?

    STM32U5的USB配置不能和STM32G0B1那样直接在STM32CubeMX上直接配置什么类了吗
    发表于 08-07 06:10

    Arm TrustZone特性面向STM32L5STM32U5系列

    在 IoT(物联网)应用中,设备很容易受到通过互联网实施的恶意入侵。因此,保护设备和信息并使可信区域和不可信区域彼此隔离,这些安全主题就非常的重要。STM32L5STM32U5 系列器件(本文
    发表于 09-07 06:28

    STM32U5 HexaSPI总线连接PSRAM的PCB布线规则

    本文介绍在使用 STM32U5 的 HexaSPI(HSPI)总线连接 PSRAM 外设时,做 PCB 布线上需要注意的一些技术要求。
    发表于 09-07 08:20

    STM32U5带OEM Key保护的RDP降级

    STM32U5 在芯片生命周期管理方面在 STM32L5 的基础做了进一步的改进,引入了OEM Key 机制,使得 RDP 的级别状态转换能够通过 OEM 设置的 password 进行保护,一方面
    发表于 09-07 06:38

    STM32U5系列使用LPBAM进行功耗优化

    实现了一流的超低功耗性能。除了多种 CPU 激活模式配置(可实现更高性能或更低功耗)之外,STM32U5 系列还支持大量低功耗模式,每种模式都具有多个选项。这使得设计人员可以在低功耗性能、短启动时
    发表于 09-08 06:54

    STM32U5中用于主设备和从设备互连的总线矩阵

    总线矩阵提供从主设备到从设备的访问,实现并行访问和高效操作当几个高速外围设备同时工作时。 STM32U5 Arm®Cortex®-M33核心针对通过具有直接访问功能的指令缓存执行通过快速主端口进行
    发表于 09-08 06:48

    STM32低功耗定时器(LPTIM)有哪些独特功能

    STM32中,相对较新的MCU部分型号配有LPTIM定时器。
    发表于 02-08 15:12 0次下载
    <b class='flag-5'>STM32</b>低功耗定时器(<b class='flag-5'>LPTIM</b>)有哪些独特<b class='flag-5'>功能</b>?

    STM32L5和STM32U5系列的Arm®TrustZone®功能

    STM32L5和STM32U5系列的Arm®TrustZone®功能
    发表于 11-21 17:06 0次下载
    <b class='flag-5'>STM32</b>L5和<b class='flag-5'>STM32U5</b>系列的Arm®TrustZone®<b class='flag-5'>功能</b>