STM32CubeMX和HAL库的使用

为什么使用CubeMX和HAL库?

博主之前一直习惯使用标准库,是因为大一刚接触单片机是从stm32f103zet6入门的,当时是买了80元的开发板,看的正点原子的标准库教学视频。因为正点原子的代码比较全面,一些基本外设使用例程都有,于是自己一直依赖标准库和例程。虽然长时间的使用对标准库的操作已经较为熟悉,但是回头想想,如果让我手敲GPIO初始化,可能也能敲出,但是效率肯定不会很高(其中有一个原因其实是博主不用stm32单片机有一段时间了,一直使用TI的TM4C、MSP432等)。早就听说stm32CubeMX配置初始化非常方便,于是打算花时间学习一下,就从STM32H750VBT6开始吧。

如何开始?

入手核心板是第一步。
第二步就是去官网查找H750的数据手册,熟悉一下H750的资源(不得不说H750的资源比F1强了不止一点!)。然后用XMind做了一个资源汇总,有一些比较陌生的专业词,博主也整理了一些,传到网盘上(本人有这个习惯)。
芯片了解差不多了,就开始找一些STMCubeMX的教学看看,官方文档啊、教学视频啊,都可以。等到软件也熟悉差不多了,就可以上手点灯啦!

记录过程

一、打开安装好的软件,到处点点熟悉一下软件界面,和大部分软件一样,标题栏、菜单栏、吧啦吧啦,发现了这个界面有几个比较重要的配置
HAL库的路径和HAL库的安装
然后就可以new一个project,选择对应的芯片,进入下一个界面
二、这个界面主要是外设初始化、时钟配置、工程配置、等等
注意:
必须初始化的地方:SWD接口,外部时钟引脚(其实不是必须,但是最好,因为晶体振荡器频率高且准确)

三、根据需要配置完后,就可以生成keil(博主使用的是keil 5.30)工程,选择debug接口,编译器版本,等等一些软件配置后,就可以编译下载了。
OK,一切顺利,核心板上的蓝灯在闪烁!

一些总结

MSP文件的理解
工程中会出现MSP文件,这不同于标准库,经过查阅资料,发现这个文件似乎是为了将HAL和芯片对应,起着关联作用。
SystemInit文件理解
这里面有两个函数,一个是时钟配置,另一个是更新时钟,但是可以发现在main.c文件中存在一个函数是system_clock_config,也是配置时钟,但是它们之间的区别是前者是通过寄存器配置,后者是通过HAL的RCC系列函数配置。最后在工程中查找,并未找到前者的调用。
main.h文件的理解
里面主要是一些用户在使用Cube时候,有一个配置引脚别名功能,那些宏定义最后都出现在这个文件中。
2021 . 4 . 10 更新
关于外设使用
使用cubemx,一般该软件只会初始化外设的配置,而不会主动打开外设,所以需要在主函数开头处手动调用函数打开该外设。
回调函数和中断服务函数的区别
HAL库的封装程度非常高,为了便于移植,HAL库增加了回调函数。但是对于习惯使用标准库的人来说,还是有点不适应。
标准库调用中断服务函数<====>HAL库先调用it.c中的TIM3_IRQHandler,然后该函数调用HAL_TIM_IRQHandler,该函数再调用回调函数,中断源的判断和标志位的清除在HAL_TIM_IRQHandler中完成,因此用户程序需要写在回调函数中
注:回调函数需要手动添加,添加在对应外设的初始化c文件下


2021 .4 .10 仍在学习更新中,如果文中有什么错误请斧正,谢谢!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值