本人2年前写的《STM32不完全手册》深受广大网友好评,感谢大家支持,并感谢大家对《STM32不完全手册》提出的修改意见。2年的时间过去了,我没有停顿,MiniSTM32开发板承蒙大家厚爱,目前已经有超过10000的人群在使用,但是MiniSTM32功能相对较为简单,所以我在2年的时间里面,设计了一款功能相对强大一点的STM32开发板:战舰STM32开发板,并编写了新的教程:《STM32开发指南》,该指南分为寄存器和库函数两个版本,并都将由北航出版社出版,书名暂定是:《精通STM32》,今年5月份左右,即可和大家见面了。
接下来,我将与大家慢慢分享《STM32开发指南》,每天发布一章/一个实验,欢迎大家讨论,我将尽量为大家解答各种疑问,并欢迎对《STM32开发指南》不完善/不正确的地方提出修改意见,先谢谢大家了。
官方店铺2:http://shop62057469.taobao.com
技术论坛:www.openedv.com
前言
Cortex-M3采用ARM V7构架,不仅支持Thumb-2指令集,而且拥有很多新特性。较之ARM7 TDMI,Cortex-M3拥有更强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成本、低功耗等众多优势。
国内Cortex-M3市场,ST(意法半导体)公司的STM32无疑是最大赢家,作为Cortex-M3内核最先尝蟹的两个公司(另一个是Luminary(流明))之一,ST无论是在市场占有率,还是在技术支持方面,都是远超其他对手。在Cortex-M3芯片的选择上,STM32无疑是大家的首选。
现在ST公司又推出了STM32F0系列Cortex M0芯片以及STM32F4系列Coretx M4芯片,这两种芯片都已经量产,而且可以比较方便的购买到,但是本指南,我们只讨论Cortex M3,(因为这个现在是性价比最高的 ^_^)有兴趣的读者可以自行了解一下。
STM32的优异性体现在如下几个方面:
1, 超低的价格。以8位机的价格,得到32位机,是STM32最大的优势。
2, 超多的外设。STM32拥有包括:FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等众多外设及功能,具有极高的集成度。
3, 丰富的型号。STM32仅M3内核就拥有F100、F101、F102、F103、F105、F107、F207、F217等8个系列上百种型号,具有QFN、LQFP、BGA等封装可供选择。同时STM32还推出了STM32L和STM32W等超低功耗和无线应用型的M3芯片。
4, 优异的实时性能。84个中断,16级可编程优先级,并且所有的引脚都可以作为中断输入。
5, 杰出的功耗控制。STM32各个外设都有自己的独立时钟开关,可以通过关闭相应外设的时钟来降低功耗。
6, 极低的开发成本。STM32的开发不需要昂贵的仿真器,只需要一个串口即可下载代码,并且支持SWD和JTAG两种调试口。SWD调试可以为你的设计带来跟多的方便,只需要2个IO口,即可实现仿真调试。
学习STM32有两份不错的中文资料:
《STM32参考手册》中文版V10.0
《Cortex-M3权威指南》中文版(宋岩 译)
前者是ST官方针对STM32的一份通用参考资料,内容翔实,但是没有实例,也没有对Cortex-M3构架进行多少介绍(估计ST是把读者都当成一个Cortex-M3熟悉者来写的),读者只能根据自己对书本的理解来编写相关代码。后者是专门介绍Cortex-M3构架的书,有简短的实例,但没有专门针对STM32的介绍。所以,在学习STM32的时候,必须结合这份资料来看。
STM32拥有非常多的寄存器,其中断管理更是复杂,对于新手来说,看ST提供的库函数虽然可以很好的使用,但是没法深入理解,一旦出错,查问题就非常痛苦了。另外,库函数在效率和代码量上面都是不如直接操作寄存器的。
本指南将结合《STM32参考手册》和《Cortex-M3权威指南》两者的优点,并从寄存器级别出发,深入浅出,向读者展示STM32的各种功能。总共配有56个实例,基本上每个实例在均配有软硬件设计,在介绍完软硬件之后,马上附上实例代码,并带有详细注释及说明,让读者快速理解代码。
这些实例涵盖了STM32的绝大部分内部资源,并且提供很多实用级别的程序,如:内存管理、拼音输入法、手写识别、图片解码、IAP等。所有实例在MDK3.80A编译器下编译通过,大家只需下载程序到ALIENTEK战舰STM32开发板,即可验证实验。
不管你是一个STM32初学者,还是一个老手,本指南都非常适合。尤其对于初学者,本指南将手把手的教你如何使用MDK,包括新建工程、编译、仿真、下载调试等一系列步骤,让你轻松上手。本指南不适用于想通过库函数学习STM32的读者,因为本指南的绝大部分内容都是直接操作STM32寄存器的,如果你想通过库函数学习STM32,建议直接看MDK安装目录下的例程就可以了。
本指南的实验平台是ALIENTEK 战舰STM32开发板,有这款开发板的朋友则直接可以拿本指南配套的光盘上的例程在开发板上运行、验证。而没有这款开发板而又想要的朋友,可以上淘宝购买。当然你如果有了一款自己的开发板,而又不想再买,也是可以的,只要你的板子上有ALIENTEK 战舰STM32开发板上的相同资源(需要实验用到的),代码一般都是可以通用的,你需要做的就只是把底层的驱动函数(一般是IO操作)稍做修改,使之适合你的开发板即可。
俗话说:人无完人。本指南也不例外,在编写过程中虽然得到了不少网友的指正,但难免不会再有出错的地方,如果大家发现指南中有什么错误的地方,还请告诉本人一声,本人邮箱:liujun6037@foxmail.com,也可以去www.openedv.com论坛给我留言。在此先向各位朋友表示真心的感谢。 |