凡亿专栏 | 【专栏】从STM32 F1移植到STM32 F0——3 外设移植
【专栏】从STM32 F1移植到STM32 F0——3 外设移植

0:引言

在一些特殊情况下,如成品需要降本,原来的芯片买不到货,需要将已经做好的产品应用程序有一款单片机移植到另一款单片机。本系列文章列出从现有的 STM32F1 器件移植到 STM32F0 器件所需的步骤,旨在帮助开发工程师节省更多开发时间。

3.2 系统架构

STM32F0 MCU 系列具有低功耗和操作简单的特点,主要面向入门级市场。为实现这一目的并保留 STM32 特有的先进高端特性,这一系列产品的内核已更换为 Cortex-M0。F0 系列产品的硅片面积小并且代码量极少,能够在低成本应用中实现 32 位的高性能。 下图介绍了 M3 M0 指令集之间的对应关系。为了避免用到无法使用的特性,从 F1 移植到 F0 时需要重新编译代码 。

1e9785734e0ead03a995e0476f6009.png


MCU 的结构也做出了重大修改,从哈佛结构切换为冯 ⋅ 诺依曼结构,这降低了系统复杂性,也就是说,更注重软件调试而降低了系统的精密程度。

3.3  存储器映射

相较 F1 系列而言, F0 系列中的外设地址映射已发生变化。主要变化体现在 GPIO 已从 APB线转移到 AHB 总线,这样这些 GPIO 便可在最大速度下工作。

4a31886cd180eb96f0c522566b03cd.png

ad4d350da711adf336a33f1b09808e.png

7aa488f840d2b954f2e4f5bf485ae1.png

9bcbc29d5d14f2c77d2230cf3e2be1.png



3.4  复位和时钟控制器 (RCC) 接口

下表介绍了 STM32F0 系列与 STM32F1 系列的 RCC(复位和时钟控制器)的主要区别。

c98adbb49b2c81c359fce6a9aaf189.png

f113a7fb833c76792ef2d33faf1c3f.png

除了上表介绍的区别外,移植时还需以下附加调整步骤。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 预取。

9df9d35371545e3878ab05189bbd94.png


02外设访问配置

相对 F1 系列而言,由于 F0 系列中的某些外设地址映射已发生更改,因此用户需要使用不同的寄存器来 [使能/禁止] 外设 [时钟] 或使外设 [进入/退出] [复位模式]。

96f17729b84d5e5009ebd6ea29d8ec.png


要配置对指定外设的访问,用户首先应了解与该外设相连的总线;请参见表 5,然后根据所需操作对上面表 8 中介绍的相应寄存器进行编程。例如,如果 USART1 连接到 APB2 总线,则需要按照如下方式配置 APB2ENR 寄存器才能使能 USART1 时钟:


RCC->APB2ENR |= RCC_APB2ENR_USART1EN;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论