0:引言
在一些特殊情况下,如成品需要降本,原来的芯片买不到货,需要将已经做好的产品应用程序有一款单片机移植到另一款单片机。本系列文章列出从现有的 STM32F1 器件移植到 STM32F0 器件所需的步骤,旨在帮助开发工程师节省更多开发时间。
3.2 系统架构
STM32F0 MCU 系列具有低功耗和操作简单的特点,主要面向入门级市场。为实现这一目的并保留 STM32 特有的先进高端特性,这一系列产品的内核已更换为 Cortex-M0。F0 系列产品的硅片面积小并且代码量极少,能够在低成本应用中实现 32 位的高性能。 下图介绍了 M3 M0 指令集之间的对应关系。为了避免用到无法使用的特性,从 F1 移植到 F0 时需要重新编译代码 。
MCU 的结构也做出了重大修改,从哈佛结构切换为冯 ⋅ 诺依曼结构,这降低了系统复杂性,也就是说,更注重软件调试而降低了系统的精密程度。
3.3 存储器映射
相较 F1 系列而言, F0 系列中的外设地址映射已发生变化。主要变化体现在 GPIO 已从 APB线转移到 AHB 总线,这样这些 GPIO 便可在最大速度下工作。
3.4 复位和时钟控制器 (RCC) 接口
下表介绍了 STM32F0 系列与 STM32F1 系列的 RCC(复位和时钟控制器)的主要区别。
除了上表介绍的区别外,移植时还需以下附加调整步骤。01
系统时钟配置
从 F1 系列移植到 F0 系列时,只需更新系统时钟配置代码中的几项设置;主要是 Flash 设置(配置适合系统频率的正确等待周期、使能/禁止预取)和/或 PLL 参数配置:(1)当 HSE 或 HSI 直接用作系统时钟源时,只需修改 Flash 参数。(2)当 PLL(由 HSE 或 HSI 提供时钟)用作系统时钟源时,需要更新 Flash 参数和 PLL配置。如下列出了一个将系统时钟配置从 F1 移植到 F0 的示例:
1、STM32F100x 超值型运行在最高性能下:系统时钟为 24 MHz(由 HSE (8 MHz)驱动的 PLL 用作系统时钟源), Flash 等待周期为 0 且已使能 Flash 预取队列。
2、F0 系列运行在最高性能下:系统时钟频率为 48 MHz(由 HSE (8 MHz) 驱动的 PLL用作系统时钟源) Flash 等待周期为 1 且已使能 Flash 预取。
02外设访问配置
相对 F1 系列而言,由于 F0 系列中的某些外设地址映射已发生更改,因此用户需要使用不同的寄存器来 [使能/禁止] 外设 [时钟] 或使外设 [进入/退出] [复位模式]。
要配置对指定外设的访问,用户首先应了解与该外设相连的总线;请参见表 5,然后根据所需操作对上面表 8 中介绍的相应寄存器进行编程。例如,如果 USART1 连接到 APB2 总线,则需要按照如下方式配置 APB2ENR 寄存器才能使能 USART1 时钟:
RCC->APB2ENR |= RCC_APB2ENR_USART1EN;