本帖最后由 正点原子运营 于 2024-5-30 17:58 编辑
1)实验平台:正点原子 精英STM32F103开发板
2) 章节摘自【正点原子】STM32F103开发指南 V1.3
6)正点原子STM32技术交流QQ群:672399978
为了让大家更好的学习和使用本书,本章将给大家介绍一下本书的学习方法,包括:本书的学习顺序、编写规范、代码规范、资料查找、学习建议等内容。 本章将分为如下几个小节: 1.1 本书学习顺序 1.2 本书参考资料 1.3 本书编写规范 1.4 本书代码规范 1.5 例程资源说明 1.6 学习资料查找 1.7 给初学者的建议
1.1 本书学习顺序为了让大家更好的学习和使用本书,我们做了以下几点考虑: 1,坚持循序渐进的思路编写,从基础到入门,从简单到复杂。 2,将知识进行分类介绍,简化学习过程,包括:基础篇、入门篇、提高篇。 3,将硬件介绍独立成一个文档(《精英V2 硬件参考手册.pdf》),本书着重介绍软件知识。 因此,大家在学习本书的时候,我们建议:先通读一遍《精英V2 硬件参考手册.pdf》,对开发板的硬件资源有个大概了解,然后从基础篇开始,再到入门篇,最后学习提高篇,循序渐进,逐一攻克。 对初学者来说,尤其要按照以上顺序学习,不要跳跃式学习,因为我们书本的知识都是一环扣一环的,如果前面的知识没学好,后面的知识学起来就会很困难。 对于已经学过STM32的朋友来说,就可以跳跃式学习了,当然如有不懂,也得翻阅前面的知识点进行巩固。
1.2 本书参考资料本书的主要参考资料有以下两份文档: 《STM32F10xxx参考手册_V10(中文版).pdf》 《Cortex-M3权威指南》中文版(宋岩 译) 前者是ST官方针对STM32的一份通用参考资料,重点介绍STM32内部资源及使用,寄存器描述等,内容翔实,但是没有实例,也没有对Cortex-M3构架进行多少介绍,读者只能根据自己对书本的理解来编写相关代码。 后者是专门介绍Cortex-M3构架的书,有简短的实例,但没有专门针对STM32的介绍。所以,在学习STM32的时候,必须结合这份资料来看。 另外,由于STM32F103的中文版是V10版本的,而最新的STM32F103英文版参考资料已经是V20的了,所以大家在遇到一些有问题/矛盾的地方,可以参考最新的英文版参考手册:《STM32英文参考手册 V20》 这几份参考文档都在我们提供的光盘资料里面可以找到,路径:A盘à8,STM32参考资料 文件夹下可以找到。
1.3 本书编写规范本书通过数十个例程,给大家详细介绍STM32的所有功能和外设,按难易程度以及知识结构,我们将本书分为三个篇章:基础篇、入门篇和提高篇。 基础篇,共12章,主要是一些基础知识介绍,包括开发环境搭建、新建工程、HAL库介绍、时钟树介绍、SYSTEM文件夹介绍等,这些章节在结构上没有共性,但是互相有关联,有一个集成的关系在里面,即:必须先学了前面的知识,才好学习后面的知识点。 入门篇和提高篇,共四十八章,详细介绍了STM32F103每一个外设的使用方法及驱动代码,并且还介绍了一些非常实用的程序代码(纯软件例程),如:内存管理、文件系统读写、拼音输入法、手写识别、图片解码、IAP等。这部分内容占了本书的绝大部分篇幅,而且这些章节在结构上都比较有共性,一般分为4个部分,如下: 1,外设功能介绍 2,硬件设计 3,程序设计 4,下载验证 外设功能介绍,简单介绍具体章节所要用到的外设功能、框图和寄存器等,让大家对所用外设的功能有一个基本了解,方便后面的程序设计。 硬件设计,包括具体章节的实验具体功能说明、所用到的硬件资源及原理图连接方式,从而知道要做什么?需要用到哪些IO口? 是怎么接线的? 方便程序设计的时候编写驱动代码。 程序设计,一般包括:驱动介绍、配置步骤、程序流程图、关键代码分析、main函数讲解等三部分。一点点介绍程序代码是怎么来的,注意事项等,从而学会整个代码。 下载验证,属于实践环节,在完成程序设计后,教大家如何下载并验证我们的例程是否正确?完成一个闭环过程。
1.4 本书代码规范为了方便大家编写高质量代码,我们对本书的代码风格进行了统一,详细的代码规范说明文档,见光盘:A盘à1,入门资料à《嵌入式单片机 C代码规范与风格.pdf》,初学者务必好好学习一下这个文档。 总结几个规范的关键点: 1,所有函数/变量名字非特殊情况,一般使用小写字母; 2,注释风格使用doxgen风格,除屏蔽外,一律使用 /* */ 方式进行注释; 3,TAB键统一使用4个空格对齐,不使用默认的方式进行对齐; 4,每两个函数之间,一般有且只有一个空行; 5,相对独立的程序块之间,使用一个空行隔开; 6,全局变量命名一般用g_开头,全局指针命名一般用 p_开头; 7,if、for、while、do、case、switch、default等语句单独占一行,一般无论有多少行执行语句,都要用加括号:{}。
1.5 例程资源说明精英V2 STM32F103开发板提供的标准例程多达63个,提供:寄存器和HAL库两个版本的代码(本手册以HAL库版本例程做为介绍,我们不再提供寄存器版本文档教程,寄存器版本例程仅供大家参考学习)。我们提供的这些例程,基本都是原创,拥有非常详细的注释,代码风格统一、循序渐进,非常适合初学者入门。 精英开发板的例程列表如表1.5.1所示: 从上表可以看出,正点原子精英开发板的例程基本上涵盖了STM32F103ZET6芯片的所有内部资源,并且外扩展了很多有价值的例程,比如:FLASH模拟EEPROM实验、USMART调试实验、UCOSII实验、内存管理实验、IAP实验、拼音输入法实验、手写识别实验、综合实验等。 而且从上表可以看出,例程安排是循序渐进的,首先从最基础的跑马灯开始,然后一步步深入,从简单到复杂,有利于大家的学习和掌握。所以,正点原子精英STM32F103开发板是非常适合初学者的。当然,对于想深入了解STM32F103内部资源的朋友,正点原子战舰开发板也绝对是一个不错的选择。
1.6 学习资料查找学习资料包括三个方面: 1,ST官方的学习资料 www.stmcu.org.cn 是ST中文社区,里面的资料全部由ST中国区的人负责更新和整理,包含了所有ST公司的MCU资料,比如:STM32F1最新的芯片文档(参考手册、数据手册、勘误手册、编程手册等)、软件资源(固件库、配置工具、PC软件等)、硬件资源(各种官方评估板)等,如图1.6.1所示: 图1.6.1 STM32F1相关资料(stmcu.org) www.st.com 是ST官网,ST最新最全的资料,一般都是放在该网站,ST中文社区的资料,一般都是从ST官网搬过来的,所以如果你想找最新的STM32官方资料,应该在ST官网找。对于初学者,一般从ST中文社区获取ST官方资料就可以了。ST官网的STM32F103资料页面如图1.6.2所示(注意:默认是英文语言,需要在网页右上角设置成中文): 图1.6.2 STM32F103官网资料(st.com) ① STM32F103的硬件相关资源,在:产品à微控制器àSTM32 ARM Cortex 32位微控制器àSTM32主流MCUàSTM32F1系列àSTM32F103à资源 路径下面可以找到。 ② STM32F103的软件相关资源,在:工具与软件à嵌入式软件à微控制器软件àSTM32微控制器软件 路径下面可以找到。 2,正点原子的学习资料 在文档中心下面,我们可以找到正点原子所有开发板、模块、产品等的详细资料下载地址。 3,正点原子论坛 在学习过程中,我们难免会遇到一些问题,有任何问题,大家都可以先去开源电子网搜索一下,基本上你能遇到的问题,我们论坛都有人问过了,所以可以很方便的找到一些参考解决方法。如果实在找不到,你也可以在论坛提问,每天原子哥都会在上面给大家做解答。
1.7 给初学者的建议对于学习STM32,这里我给大家提以下三点建议: 1,准备一款合适的开发板(强烈建议配仿真器) 任何实验,我们都需要验证,最好的验证方式就是在开发板上面实际跑起来,然后通过仿真器仿真调试,查看具体的执行过程。仿真调试可以加深印象,还可以方便的查找bug,所以学习STM32必备:一个开发板 + 一个仿真器。 另外,开发板在精不在多,学好一款,基本上就够用了。 2,两本参考资料,即《STM32F10xxx参考手册_V10(中文版).pdf》和《Cortex-M3权威指南》。 这两个手册在本章1.2节有过介绍,对于我们学习STM32和了解Cortex M3内核非常有帮助,是学习STM32的必备资料,因此初学者尤其要多看这两个手册。 这里建议大家,要多了解一些底层的东西(可结合这两个手册,看看寄存器版本的例程),不要只会使用库,否则,一旦遇到问题,或者换个芯片,就不知道怎么办了。 3,戒骄戒躁,勤思敏行。 学习STM32千万不能浮躁,更加不能骄傲,初学者学习STM32会遇到很多问题和难点,这个时候千万不能浮躁,不要带情绪,一定要静下心来,缕清思路,逐一攻克。 我就曾经遇到一个问题半个月都没解决的情况,但是这半个月我尝试并掌握了很多解决问题的方法,最终解决问题的时候,其实带来的收获远远大于问题本身。所以不要遇到问题就认怂,就想问别人,问老师,先尝试自己解决一下,比如花个十天半个月去解决一个问题,我相信你也会有很多收获。 学习我们教程的时候,要多思考,多想想为什么要这么写?有没有其他更好的办法?然后,自己去验证,去实践。这里非常重要的一点是要多实践,一定要自己动手写代码,然后再下载到开发板验证,不要只是看看视频,看看例程就算完了,要能做到举一反三,如果自己不实践,不动手写代码,是很难真正学会的。 最后,C语言是学习STM32的必备知识,所以如果C语言不过关的朋友,得先好好学习一下C语言基础,否则学起来会比较吃力。 |