如果问一个设计人员,产品设计时,选择器件最关心的因素是什么,那么跟得上形势发展可能是常见的、很重要的一个因素。如果问老板选择器件最关心的因素是什么,可能只有“便宜”两个字。ST公司的STM32F0x芯片是一款基于Cortex-M0,兼顾性能与价格优势于一体的32位处理器。ST公司的Cortex-M3系列产品已经在国内拥有大量客户群体,STM32F0x芯片的用户群也在日益扩大中。
Cortex-M0芯片具有小型、低功耗、低闸数、精简程序代码的特点,内建各种模拟与混合信号组件及多种高速通信能力器件,开发人员可以直接跳过16位系统,以接近8位系统的成本开销获取32 位系统的性能。Cortex-M0芯片是学习ARM处理器的最佳入门选择。
STM32F0x在Cortex-M0芯片基础上继承了ST公司Cortex-M3系列产品优点,并对一些不足之处进行了修正(例如I2C外设),还增加了一些优秀功能(例如USART的超时检测),适用于工业控制器、家庭自动化、打印机和白色家电、游戏机、DVD/蓝光播放机和音频/视频接收机等。
STM32F0x具有如下特点。
百货迎百客,按需选择:STM32F0x根据外设情况,将产品划分成多种系列,并不是一种大而全的芯片,用户可根据产品需求与成本选用不同芯片。例如,对于是否需要CAN通信就限制选择范围与成本。
一招鲜吃遍天下:STM32F0x家族成员比较多,但不代表各自为政。STM32F0x家族的外设与引脚位置不是一对一。在相同封装下STM32F0x芯片引脚定义相同,通过外设复用选用不同外设。而且借助ST公司提供STM32F0x固件库开发的应用程序可在STM32F0x家族(只要包含该外设)随意运行。书中的代码除了CAN通信一章,程序可以在各种STM32F0x上运行。
全书共17章。其中第1~4章是基础;第5~15章是外设功能讲解;第16、17章是综合实例与高级功能。
第 1 章首先讲解相比8位机,Cortex-M0的优势,以及如何从8位机过渡到Cortex-M0,并说明Cortex-M0的基础与特征,主要有寄存器、存储器映射、系统总线、存储器保护单元、嵌套中断控制器;最后一部分会说明STM32F0x在同类产品的优势以及特点,为何选用STM32F0x进行产品的开发。
第 2 章主要讲解了进行STM32F0软件开发需要准备的条件,分别介绍了MDK以及J-ink、U-ink、Stlink仿真器。MDK是原Keil公司的产品,对于熟悉Keil C51单片机开发的用户会感受到ARM公司对C8051用户的重视,也非常欢迎该用户群体过渡到Cortex-M0的开发中。
第 3 章讲解有关硬件设计的基础,主要包括STM32F0x的电源、时钟,以及本书所使用的电路图。
第4章讲解进行STM32F0x软件开发的固件库内容。固件库内容涉及了ARM公司的CMSIS标准及ST公司的固件库标准。其中CMSIS是理解目前ARM对软件组织结构以及系统启动文件的规范,也是目前所有Cortex-M内核CPU软件设计的要求与基础。最后讲解了使用ST公司固件库建立工程文件的过程。
第5章~第14章讲解了STM32F0x的系统定时器、GPIO、NVIC、UART、I2C、SPI、ADC、DAC、PWM、定时器、CAN。每1章均提供了1~2个实际项目中的使用实例,涉及实际开发中使用各种芯片的注意事项以及技巧(或者说作者的经验教训)。
第16章讲解RTX操作系统,介绍Keil自带的实时操作系统的原理与使用过程。结合第4章的超级循环和中断模式,读者可根据自己产品特点选用相应的软件程序框架。
第17章是关于如何使用STM32F0x设计一个USB的电流、电压检测器,从设计需求、硬件设计、软件设计等方面进行详细分析,引导读者如何做产品设计、开发。
本书的第1~8章、第10~11章和第13~17章由张燕妮编写,第9章由谢玲和王洪玲编写,第12章由贾芳和丁维才编写,同时丁维才对全书代码进行了验证。
书中讲解的源代码只摘取了与相应章节配套的部分进行了说明,需要完整代码,可从电子工业出版社电子信息出版分社下载。
感谢电子工业出版社的王敬栋、刘海艳两位编辑对本书的大力支持。感谢家人与朋友的理解和支持。
由于STM32F0x家族的新成员仍在不断增加中,并且作者水平有限以及时间仓促,难免有差错和不足之处恳请读者批评指正。
张燕妮