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

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

3天内不再提示

STM32CubeMX生成的代码,是怎样的HAL架构?

撞上电子 2025-01-01 21:01 次阅读

需要注意,CubeMX只是一个初始化工具,它只是帮你完成了HAL库外设和时钟的初始化,具体程序的编写还需要查阅HAL库的说明,使用相关函数实现你想实现的功能。

CubeMX生成的代码包含了丰富的注释,为用户规范编程提供了参考,如果后期还需要使用CubeMX更改时钟或是添加新的外设,用户代码必须写在相应注释BEGIN和END之间,否则再次使用CubeMX生成代码时,未在指定位置的代码会被删除!

790d7c76-c840-11ef-9434-92fbcf53809c.png

CubeMX可以帮助用户初始化外设,所做的操作在MX_XX_Init()中,但如果用户在代码中自行更改了MX_XX_Init()的内容,再次打开 CubeMX,图形化界面并不会同步用户在代码中对初始化部分所做的更改!

综上所述,如果用户希望在整个项目开发过程中一直使用CubeMX进行初始化和对外设参数进行修改,一是需要严格按照注释的位置编写代码,二是不要在代码层面改动MX_XX_Init()的内容,对外设初始化参数的修改要在CubeMX中进行。

如果用户只是希望使用CubeMX生成一个工程模板,后期新加外设或修改时钟不再使用CubeMX工具,而是纯使用代码来实现,则不需考虑代码位置和CubeMX的初始化更改。

79261204-c840-11ef-9434-92fbcf53809c.png


Application/MDK-ARM文件夹:

此文件夹下存放在.s启动文件,用户一般不需要进行更改。

Drivers/CMSIS文件夹:

存放CMSIS接口文件,用户一般无需关心。

Application/User/Core文件夹:

main.c里面有main函数,用户程序从此处开始执行;

xx.c关于外设的初始化函数MX_XX_Init()、外设结构体等就在此处被定义;

stm32xx_it.c 中断服务函数在此处被定义(其实也支持在别处复定义),用户可以修改中断服务函数来实现用户需要的功能;

stm32xx_hal_msp.c 与初始化相关,如果用CubeMX进行初始化,一般也无需关心此文件。

Drivers/STM32xx_HAL_Driver文件夹:

HAL库文件夹,里面存放这各个外设相关函数,我们调用的函数,也大多来自此处。

更重要的是,这里面也包含HAL库相关外设的使用说明书,以stm32f1xx_hal_gpio_ex.c为例,在库函数的前面会有大篇幅的介绍,介绍如何使用这个外设,实现什么功能需要调用什么函数,非常贴心。

793e11ec-c840-11ef-9434-92fbcf53809c.png

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

    关注

    2270

    文章

    10904

    浏览量

    356397
  • 代码
    +关注

    关注

    30

    文章

    4791

    浏览量

    68699
  • HAL
    HAL
    +关注

    关注

    2

    文章

    71

    浏览量

    12632
收藏 人收藏

    评论

    相关推荐

    STM32CubeMx入门教程(4):PWM应用

    导语“使用STM32CubeMx配置定时器输出PWM波,生成初始化代码。”
    发表于 07-11 15:23 2489次阅读
    <b class='flag-5'>STM32CubeMx</b>入门教程(4):PWM应用

    STM32F030K6xx HAL库及STM32CubeMX生成代码

    **STM32F030K6xx HALSTM32CubeMX生成代码中IWDG喂狗复位**最近在编写一个项目时用
    发表于 08-02 10:46

    STM32CubeMXHAL库进行开发

    STM32CubeMXHAL库学习--基本定时器定时中断背景STM32CubeMX生成初始化代码在MDK-ARM里编辑
    发表于 08-11 06:59

    STM32CubeMx代码生成问题求解

    STM32CubeMx生成如下代码HAL_GPIO_EXTI_IRQHandler (GPIO_OUTPUT_PA0_Pin);但我希望它生成
    发表于 12-13 06:36

    使用STM32CubeMx版本6.5.0生成代码缺少HAL_RTCEx_SetWakeUpTimer_IT ()的原因?

    使用 STM32CubeMx 版本 6.5.0 生成代码缺少 MX_RTC_Init () 函数中应包含的 HAL_RTCEx_SetWakeUpTimer_IT ()。
    发表于 02-02 07:38

    STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案

    STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
    发表于 11-24 20:51 20次下载
    <b class='flag-5'>STM32CubeMX</b> 配置<b class='flag-5'>STM32</b>F407 实现<b class='flag-5'>HAL</b>库延时微妙方案

    STM32CubeMX生成代码在SW4STM32下移植STemWin(CLion+CubeMX

    STM32CubeMX生成代码在SW4STM32下移植STemWin(CLion+CubeMX)文章目录
    发表于 12-04 14:36 12次下载
    <b class='flag-5'>STM32CubeMX</b><b class='flag-5'>生成</b><b class='flag-5'>代码</b>在SW4<b class='flag-5'>STM32</b>下移植STemWin(CLion+<b class='flag-5'>CubeMX</b>)

    STM32cubemx教程及STM32入门(一)

    生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。在CubeMX
    发表于 12-07 17:36 13次下载
    <b class='flag-5'>STM32cubemx</b>教程及<b class='flag-5'>STM32</b>入门(一)

    STM32实战 2 | STM32CubeMXHAL库点亮LED

    STM32实战 2 | STM32CubeMXHAL库点亮LED
    发表于 12-08 12:36 34次下载
    <b class='flag-5'>STM32</b>实战 2 | <b class='flag-5'>STM32CubeMX</b>及<b class='flag-5'>HAL</b>库点亮LED

    STM32CubeMX基于HAL库实现简单串口通信

    STM32CubeMX基于HAL库实现简单串口通信板子:STM32F103C8编译工具:Keil+STM32CubeMX烧录工具:FlyMcu串口调试程序:XCOM实验要求:1)设置波
    发表于 12-08 12:36 20次下载
    <b class='flag-5'>STM32CubeMX</b>基于<b class='flag-5'>HAL</b>库实现简单串口通信

    STM32CubeMX | STM32基于HAL实现USB模拟U盘

    STM32CubeMX | STM32基于HAL实现USB模拟U盘目录STM32CubeMX | STM32基于
    发表于 12-28 20:04 40次下载
    <b class='flag-5'>STM32CubeMX</b> | <b class='flag-5'>STM32</b>基于<b class='flag-5'>HAL</b>实现USB模拟U盘

    STM32CubeMXHAL库学习--ADC与USART的简单练习

    STM32CubeMXHAL库学习--ADC与USART的简单练习前言STM32CubeMX生成初始化代码在MDK-ARM里编辑
    发表于 01-12 20:27 13次下载
    <b class='flag-5'>STM32CubeMX</b>与<b class='flag-5'>HAL</b>库学习--ADC与USART的简单练习

    STM32CubeMX用于STM32配置并初始化C代码生成

    STM32CubeMX用于STM32配置 并初始化C代码生成.STM32CubeMXSTM32
    发表于 02-14 11:00 5次下载

    使用STM32CubeMX生成初始化代码

    我使用STM32CubeMX生成初始化代码,使用LL库,这里只介绍跟i2c相关的部分,其他必要的初始化需要自己完成。芯片使用stm32f042。本文的
    的头像 发表于 03-22 15:26 3025次阅读

    STM32CubeMX的配置和C代码生成

    电子发烧友网站提供《STM32CubeMX的配置和C代码生成.pdf》资料免费下载
    发表于 09-20 09:53 8次下载
    <b class='flag-5'>STM32CubeMX</b>的配置和C<b class='flag-5'>代码</b>的<b class='flag-5'>生成</b>