|
大家好,我之前一直用STM8S003,都是直接操作寄存器,感觉还是挺好用的,遇到问题就看看手册泡泡坛子基本都能搞定,后来由于产品的升级,STM8就不够用了,首先就想到STM32,可是当我看到那么多寄存器,感觉头好晕,也看了一些视频教程,感觉设置的确比STM8要麻烦太多了,后来看到STM32CUBEMX可以以图形化的界面产生初始设置的代码,觉得挺不错,但是相关的例程好像不多,视频教程也少,大家有在用cubeMX吗? |
微信公众号
手机版
使用Cube的坏处是,它对操作封装的太好了,不利于你对底层操作的理解。
如果是刚开始使用STM32系列芯片,个人建议先使用标准库。
有的人还在操作寄存器,说这样可以更灵活,代码效率更高。本人持反对态度。
自己操作寄存器,出错的概率很高,编写程序耗费的精力很大,出错的时候检查一样非常困难。再者,现在的CPU主频已经完全可以弥补运行效率的问题,除了非常特殊的应用。
直接操作寄存器无异于使用汇编写代码,除了显摆一下自己知道寄存器哪个位干什么用,没有太多可取的地方。
刚开始用的时候,会遇到一些麻烦,觉得很不好用。原因是,HAL库的结构和标准库有很大不同,特别是中断部分。HAL库把中断源的判断,中断的标志位处理等封装到中断函数,给用户提供了callback函数(可在相应外设的.h文件找到其原型)。用户使用某个中断的时候,只需要在CubeMX配置并生成代码后,重写相应的callback函数。
CubeMX更强大的地方是对FATFS等中间件的支持。
最近用CubeMX生成了一个SD卡的工程,硬件使用SDIO接口,配置完成之后,直接调用f_mount()函数挂载FATFS,然后就可以调用f_open()等文件操作函数了。对于SD卡的底层操作根本不用自己去写,SD卡复杂的初始化过程也不需要关心。
例程很多的,你安装cubeMX以后,下载对应的pack压缩包,解压后就有例程。
HAL库里的注释也算齐全,用起来没有太大问题。