摘要:本文是作者学习STM32的阶段性总结,分为两篇博客。第一篇主要介绍了解STM32的契机与学习过程,并详细对比了标准库、寄存器开发与HAL库的优劣,最终给出了先学标准库再转HAL库的双库结合学习路线;第二篇将分享学习中遇到的困难、AI与Agent的合理使用,以及日常记录的意义。本文重点讲述第一篇内容,为后续学习提供参考。

这个标题分两篇博客。

第一篇包括:

一.了解STM32及我学习的原因和大致过程

二.标准库和HAL库的学习选择

1.标注库和寄存器开发

2.HAL库开发

3.双库结合

第二篇包括:

三.学习中遇到的困难

1.概念理解与记忆

2.外设硬件和代码软件

3.内驱和迷茫

四.AI及Agent的合理使用

1.AI和Agent两者的区别

2.合理的使用

五.日常学习过程中记录的意义(视频和文章)

一.了解STM32及我学习的原因和大致过程

STM32,全称为:ST 32-bit Microcontroller是由ST公司以ARM公司设计的32位芯片架构为基础,在外围增添了一些如:GPIO, USART, 定时器, ADC, DMA等等外设后封装成为的单片机。因其运行的编程代码就是我在暑假学习的C语言,所以我在网上了解到STM32之后便在军训期间开始跟随B站上的视频学习(作者学习STM32的日常)。

刚开始学习的时候我是跟随江科大STM32学习,并买了他的正版的板子( 进200是真贵:((( ,但售后做得好),但两个星期的军训结束之后我了解到了苍穹战队(Robo Master),很感兴趣。但学长们说现在队里都用的是HAL库,然后我就转头去看野火小智HAL库的教学视频一直学到现在。

二.标准库和HAL库的学习选择

1.标注库和寄存器开发

标准库的现状:1.几乎所有的外设都需要自己手动去写初始化代码,或是复制粘贴之前的相关外设的初始化配置代码;2.ST公司已经不再对标准库进行维护和更新了;3.当前几乎所有领域都不在用标准库......所以因为种种原因,标准库已逐渐退出STM32工程开发。但是学习标准库也不是说没有作用和意义,标准库对函数的分装更接近寄存器底层,所以通过学习标准库我们对STM32底层的寄存器的理解更加深刻(STM32代码的本质就是在控制寄存器各个位上的值),且许多国产芯片的的代码库也是在模仿标准库。那此时就会有人问:标准库不还是对寄存器进行了分装吗,那么为什么不直接学习寄存器开发呢?第一是寄存器开发太过麻烦;第二是要进行寄存器开发就一定需要不断地查询STM32官方手册,也会拖慢开发效率;第三是当前的寄存器开发的教学视频实在是太少了,很难做到系统性的学习;第四是其对于开发者的能力要求很高。但寄存器开发也有优点,就是其代码最少运行的效率最快。值得一提的是,当前B站上STM32教程播放量最高的江科大视频仍然使用标准库开发。

2.HAL库开发

HAL库是当前ST公司大力发展的代码库,其不仅函数分装更加完善,而且用ST公司官方的STM32开发软件(CubeMX和CubeIDE)可以自动生成外设初始化代码,极大的提升了开发效率。其次HAL库的函数分装很好,使开发时代码的编写更加方便。且网上也有大量的HAL库开发资料。但是HAL库也有缺点,第一就是对于比较大的工程,用CubeMX或CubeIDE生成的代码文件夹不方便管理,最好也像标准库那样自己建立一个工程模版;第二就是其代码生成太过于方便以至于很多人会忽略对外设及代码含义的理解;最后就是其运行速度是慢与标注库和寄存器开发的,但这个差距我还没感觉到,主要是因为我建立的工程太小了(理论上一定有差距)。

3.双库结合

结合上述我的学习路线是先学习江科大的标准库,但并不学完,在学到USART串口通讯的时候转去学习野火小智的HAL库。下面讲解一下原因:1.我认为学习时最好还是对其本质有一定的了解才方便又进一步的扩展;2.如果你认认真真地学完江科大的标准库USART串口通讯前的内容,那你对STM32的外设及其运行逻辑会有一个比较清晰的认识,此时转去学更方便的HAL库会更加容易上手(一周时间内就可以);3.再看快速过一遍野火小智HAL库前面你已学过的内容即使在让我们熟悉软件之间的配合(我用的是CubeMX和Keil),也是在复习巩固前面的知识。而我在学习HAL库的时候没有看keyskingSTM32HAL库开发,是因为,第一我感觉其节奏实在是太快,我跟不上(可能我脑子转不过来)。其次是其用的是CubeIDE软件开发,而苍穹战队推荐用CubeMX加CLion(我之后会学)开发。所以我最终选择的是野火小智。

作者寄语:

我说学习的过程并不是最完美的,但我认为是比较合理且兼顾多个方面。在学习时自己也要去多多思考自己学习的方式和顺序是否有问题?有无更好的?以使我们在下一个学习阶段可以更新我们的学习方式和顺序。我在学习STM32的时候也有到了许多问题,最终也要一一解决。下一篇博客让我来谈谈这些困难及如何解决吧!

感谢你的阅读,如果感觉还不错,就给我一个点赞、收藏加评论,制作不易,感谢支持!!!

博主的一个月学习成果(蓝牙小车)

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐