引言
在一些特殊情况下,如成品需要降本,原来的芯片买不到货,需要将已经做好的产品应用程序有一款单片机移植到另一款单片机。本系列文章列出从现有的 STM32F1 器件移植到 STM32F0 器件所需的步骤,旨在帮助开发工程师节省更多开发时间。
3.7 GPIO 接口
与 F1 系列相比, STM32F0 GPIO 外设内置了多个新特性,主要包括:
GPIO 映射到 AHB 总线上,可以获得更佳的性能。
I/O 引脚复用器和映射:引脚通过多路复用器连接到片上外设 / 模块,该复用器一次只允许一个外设复用功能 (AF) 连接到 I/O 引脚。这样便可确保共用同一个 I/O 引脚的外设之间不会发生冲突。
I/O 配置的方式和特性更加丰富。
F0 GPIO 外设是一项全新的设计,因此在结构、特性和寄存器方面均不同于 F1 系列中的GPIO 外设。使用 GPIO 写入 F1 系列的任何代码都需要重写后才能在 F0 系列上运行。
01复用功能模式
STM32F1 系列
1、I/O 用作复用功能的配置取决于所使用的外设模式。例如, USART Tx 引脚应配置为复用功能推挽,而 USART Rx 引脚应配置为输入悬空或输入上拉。
2、为针对不同器件封装(尤其是引脚数较少的器件)优化外设 I/O 功能的数量,可以用软件将某些复用功能重新映射到其它引脚上。例如,可将 USART2_RX 引脚映射到 PA3(默认重映射)或 PD6(软件重映射)上。
STM32F0 系列
1、不论使用何种外设模式,都必须将 I/O 配置为复用功能,之后系统才能正确使用 I/O(输入或输出)。
2、I/O 引脚通过复用器连接到片上外设/模块,该复用器一次只允许一个外设的复用功能 (AF)连接到 I/O 引脚。这样便可确保共用同一个 I/O 引脚的外设之间不会发生冲突。每个 I/O引脚都有一个复用器,该复用器具有八路复用功能输入(AF0 到 AF7),可通过GPIOx_AFRL 和 GPIOx_AFRH 寄存器对这些输入进行配置:通过配置 AF0 到 AF7 可以映射外设复用功能。
3、除了这种灵活的 I/O 复用架构之外,各外设还具有映射到不同 I/O 引脚的复用功能,这可以针对不同器件封装优化外设 I/O 功能的数量。例如,可将 USART2_RX 引脚映射到PA3 或 PA15 引脚上。
4、配置过程
(1)在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能
(2)通过 GPIOx_OTYPER、 GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度
(3)将 I/O 连接到 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中所需的 AFx
3.8 EXTI 中断源选择
在 STM32F1 中,通过 AFIO_EXTICRx 寄存器的 EXTIx 位选择 EXTI 线源,而在 F0 系列中,通过 SYSCFG_EXTICRx 寄存器的 EXTIx 位完成这种选择。
只有 EXTICRx 寄存器的映射发生更改,而 EXTIx 位的含义则保持不变。不过,由于最后一个端口为 F,因此 EXTIx 位的值范围最大为 0b0101(在 F1 系列中,最大值为 0b0110)。
3.9 Flash 接口
下表介绍了 STM32F1 系列与 STM32F0 系列的 Flash 接口之间的区别,分组如下:
新接口,新技术
新架构
新的读保护机制,提供 3 个保护级别
因此, F0 Flash 编程过程和寄存器均不同于 F1 系列,而且写入 F1 系列 Flash 接口的任何代码都需要重写后才能在 F0 系列上运行。
3.10 ADC 接口
3.11 USART 接口
相较 F1 系列而言, STM32F0 系列内置一个新的 USART 外设。其结构、特性和编程接口均经过修改,引入了全新的功能。
因此, F0 USART 编程过程和寄存器均不同于 F1 系列,因此,使用 USART 写入 F1 系列的任何代码都需要更新后才能在 F0 系列上运行。
F0 USART 提供了卓越新增特性:
允许选择独立的时钟源
具备 UART 功能并且能够从低功耗模式唤醒,
方便的波特率编程,与 APB 时钟重新编程无关。
智能卡仿真功能:T=0(支持自动重试)和 T=1
Tx/Rx 引脚配置可交换
二进制数据反向
Tx/Rx 引脚有效电平翻转
发送/接收使能确认标志
带标志的新中断源:
地址/字符匹配
块长度检测和超时检测
超时特性
Modbus 通信
禁止超时标志
出现接收错误时禁止 DMA
从停止模式唤醒
有波特率自动检测功能
RS485 模式下发出驱动器使能信号 (DE)