每个公司的芯片资料都有自己的体系,展现芯片特性的方式
不管什么样的展现方式,目的都是让使用芯片的技术人员能够尽可能全面地、详细地了解该款产品的特性和功能。
相对于其它公司的MCU产品(如常见的以51核心设计的MCU,还有你提到的NXP ARM),STM32的功能更加丰富、强大和灵活。例如STM32的USART模块,不但能够实现最常用的UART功能,还能够实现LIN主设备、IrDA编解码、智能卡的7816-3协议、SPI主设备、UART单线半双工操作、多机通信的地址识别、远程唤醒等很多功能。
对于如此丰富的功能,STM32的参考手册为每一种功能模块都专门设置了一章,详细介绍该模块的方方面面,还是以USART模块为例,介绍的顺序是:
简介——模块的基本描述。
主要特性——罗列了该模块所有主要的功能。
功能描述——这部分是最重要的部分,详细介绍了内部结构、实现的功能时序、操作方式。有些模块还介绍了内部实现机制,如UART起始位的采样识别方式、用于提高抗噪声的内部超频采样机制等,这些内容对于设计产品的工程师是非常有用的,但很多初学者往往不太关心。
寄存器描述——这部分详细介绍了所有寄存器中的所有位的意义和用法。
除了这几个部分之外,不少模块的章节还包含了中断请求、DMA操作、低功耗模式、调试模式等内容。
因为STM32中各个模块的功能非常丰富,只阅读寄存器位的描述,一般很难掌握功能模块的使用。读者必须按照STM32参考手册中每一章给出的顺序,在全面地了解了所有功能和其操作原理的基础上,再参考最后一部分的寄存器描述段落,才能够使用好各种功能。
与STM32相比,很多其它公司的产品,模块的功能相对单一,在使用这样产品的时候,可以在不详细了解内部实现机制的情况下,从各个寄存器位的描述中,即可基本掌握它的操作,但我认为这样的学习方式不适合于STM32。
建议学习STM32的方式是要先掌握各个模块中的功能及其详细操作原理,然后再结合STM32固件库中的例子,更加深入的学习功能模块的使用。对模块各种功能的操作原理有了比较深入了解的基础上,再考虑使用直接操作寄存器位的方式,高效地使用功能模块。
学习STM32需要从它的详细操作原理出发,再结合相应的应用环境灵活地选择最合适的操作方法(实现一种目标功能的方法不是唯一的),才能够学好用好STM32,所以我说STM32的手册是给有经验的工程师看的,不是给初学者看的。
关于STM32手册的层次,我在很多帖子中说明过,这里抄录如下:
选型可以看
选型手册;选好型号之后可以看
数据手册,了解更详细的芯片功能;了解了相应功能后,可以看
技术参考手册具体了解如何使用各种功能。
选型手册:适用于基本的浏览,了解芯片具有哪些特性的基本信息。
数据手册:详细介绍某个或某几个具体型号产品中的详细功能,还有这些芯片的电气特性。这个手册适用于设计人员确定系统设计方案时查看。
技术参考手册:详细介绍所有STM32系列产品中所有功能模块的详细使用方法,包括结构、功能模式、编程方法等。这个手册适用于工程人员具体实施设计工作时使用,尤其是供软件设计人员使用。
所有这些手册都可以在ST网站上下载。
STM32技术文档网页
STM32是一个新上市的产品,我还没有看到给初学者快速入门的教程。从另一方面讲,学习STM32需要从详细操作原理出发,我也怀疑能够有好的快速入门教程。
我建议你可以以STM32固件库中的例子入手,再结合STM32固件库的源程序代码和参考手册的说明,强化对详细操作原理的理解。
ST网站上还有不少应用笔记,也是很好的学习资料。