从 STM32F1 到 STM32L1
应用手册
1 简述
对于 STM32 系列微处理器的开发人员来说,拥有在系列中选换微处理器型号的能力是
非常重要的。当产品的需求发生变化,微处理器的型号很可能也需要随着改变:比如需要更
大的内存、需要更多的 I/O 管脚、甚至成本的限制使得你必须选择更小的封装来减小 PCB
面积等。
本应用手册即是为了帮助你完成从 STM32F 系列到 STM32L 系列的移植,手册收集了
所有移植中至关重要的问题。
从 STM32F 移植到 STM32L,需要从硬件、外围设备以及固件库三个方面来进行。
为了更好的理解本应用手册,你应该对STM32微处理器系列产品有比较深刻的了解,
为此你可以在www.st.com网站上阅读以下文档:
STM32F系列参考手册(RM0008 和 RM0041),STM32F数据手册和FLASH编程手册(PM0075,
PM0063 和PM0068)
STM32L系列参考手册(RM0038)),STM32L数据手册、FLASH和EEPROM编程手册(PM0062)
如果想了解全系列的STM32产品之间互相移植的问题,可以参考文档“AN3364”;里面
详细说明了STM32产品之间移植和兼容性的准则
2 硬件移植
超低功耗的 STM32L 系列和通用型 STM32F 系列微处理器的管脚是完全兼容的,外围
设备和复用管脚也完全相同,只是在封装和名称上有微小的不同。
事实上 STM32L1XX 和 STM32F1XX 接近完全兼容,尤其是电源和功能管脚是完全相
同的,以下是几个不同的地方:
STM32 F1 系列
QFP48 QFP64 QFP100
5
6
1
-
5
6
1
-
12
13
6
73
管脚
PD0
PD1
VBAT
NC
STM32 L1 系列
QFP48 QFP64 QFP100
5
6
1
-
5
6
1
-
12
13
6
73
管脚
PH0
PH1
VLCD
PH2
以下说明 F1 系列和 L1 系列在电路板设计时要注意的兼容性问题:
LQFP100 封装的微处理器
F1 系列:VBAT 管脚如果不用,必须通过 100nF 的电容联接到 VDD。
73 管脚是空脚,可联接 0 欧电阻或悬空
L1 系列:VLCD 管脚如果不用,必须通过 1uF 的电容联接到 VDD。
73 管脚是 PH2
LQFP64/LQFP48 封装的微处理器
F1 系列:VBAT 管脚如果不用,必须通过 100nF 的电容联接到 VDD。
L1 系列:VLCD 管脚如果不用,必须通过 1uF 的电容联接到 VDD。
3 外围设备的移植
如表 2 所示,外围设备可以分成三类:
— 通用的外围设备有专用固件库支持无需任何修改。
— 某些外围设备的配置方法不相同,此时你必须修改该外设的相关配置(如时钟配置、
管脚配置、中断和 DMA 功能)
— 改进的外围设备,如 FLASH、ADC、GPIO 和 RTC,相比 F1 系列,L1 系列上这
些设备的改动很大。
以上 L1 系列的这些改进都是为了降低功耗和改进性能,以适应新的市场需求,故此相
比 F1 系列而言增加了一些限制。
3.1 STM32 交叉兼容
STM32 系列嵌入的外围设备可分为三类:
第一类是针对所有产品通用的外围设备,这些外围设备是相同的,有着相同的结构、寄
存器和控制位。这类外围设备在移植的时候,应用层不需要更改任何固件即可保持相同
的功能。
第二类外围设备所有产品都有,其中只有细微的差别(通常是为了支持新功能),此类
外围设备移植时非常简单,一般不会有太多的改动。
第三类外围设备有很大的变化,通常是新的架构或功能,应用层移植时对此类外围设备
需要重新开发。
表 2 给出了这种分类的一般概述
表 2: F1 系列和 L1 系列外围设备兼容性分析
外围设备
F1 系
L1 系
说明
L1 系列没有 I2S
-
-
-
-
-
-
-
-
增强
增强
有限修改/采样率修改/
采样率大于 8
有限修改
DMA 无运行中断
新外设
新外设
新外设
新外设
SPI
WWDG
IWDG
DBGMCU
CRC
EXTI
USB FS
Device
DMA
TIM
PWR
RCC
USART
I2C
DAC
ADC
RTC
FLASH
GPIO
CAN
CEC
Ethernet
SDIO
FSMC
LCD 屏
COMP
SYSCFG
列
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
无
无
无
列
-
-
-
-
-
-
-
-
-
+
+
+
+
+
++
++
++
++
无
无
无
无
无
-
-
-
兼容性
引脚
相同
-
-
-
-
相同
相同
-
相同
-
-
相同
相同
相同
相同
同一特征相同
-
相同
软件兼容性
完全兼容
完全兼容
完全兼容
完全兼容
完全兼容
完全兼容
完全兼容
完全兼容
完全兼容
相同性能完全兼容
部分兼容
完全兼容
完全兼容
完全兼容
部分兼容
不兼容
不兼容
不兼容
++ 新架构或新功能 + 功能相同,但规格更改或增强 -不变
3.2 系统结构
STM32L1 系列微处理器基于 Cortex-M3 内核,从性能、功能、内存大小和封装管脚
数量都拓展了 ST 公司的超低功耗产品线,L1 系列产品通过优化的架构和 ST 公司专利技术,
将高性能和超低功耗完美结合,这些优点也体现在 STM8L 系列。STM32L1 系列提供两种
不同的产品线(STM32L151 和 STM32L152),适应大部分注重节能的应用场合。
3.3 内存映射
相比于 F1 系列,L1 系列的外设地址映射有些改变,最主要的变化是把 GPIO 从 APB
总线移动到 AHB 总线,以便让它们能以最高的速度运行。
下表提供了 F1 系列和 L1 系列外围设备地址映射的对应关系。
表 3:STM32 F1 和 STM32 L1 系列之间的 IP 总线映射差异
外围设备
L1 系列
F1 系列
DMA1
FLASH
RCC
CRC
GPIOH
GPIOE
GPIOD
GPIOC
GPIOB
GPIOA
USART1
SP1
ADC1
TIM11
TIM10
TIM9
EXTI
SYSCFG
COMP+RI
DAC
PWR
总线
AHB
APB2
APB1
基地址
0x40026000
0x40023C00
0x40023800
0x40023000
0x40021400
0x40021000
0x40020C00
0x40020800
0x40020400
0x40020000
0x40013800
0x40013000
0x40012400
0x40011000
0x40010C00
0x40010800
0x40010400
0x40010000
0x40007C00
0x40007400
0x40007000
总线
AHB
无
APB2
APB2
无
无
APB1
基地址
0x40020000
0x40022000
0x40021000
0x40023000
无
0x40011800
0x40011400
0x40011000
0x40010C00
0x40010800
0x40013800
0x40013000
0x40012400
0x40015400
0x40015000
0x40014C00
0x40010400
无
无
0x40007400
0x40007000
USB FS 设备 SRAM
USB FS 设备
I2C2
I2C1
USART3
USART2
SPI2
IWDG
WWDG
RTC
LCD
TIM7
TIM6
TIM4
TIM3
TIM2
FSMC 寄存器
USB OTG FS
以太网 MAC
DMA2
GPIOG
GPIOF
SDIO
ADC2
ADC3
TIM8
TIM1
CAN2
CAN1
UART5
UART4
SPI3/I2S3
TIM14
TIM13
TIM12
TIM5
BKP 寄存器
AFIO
高亮黄色表示地址映射不同
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
0x40006000
0x40005C00
0x40005800
0x40005400
0x40004800
0x40004400
0x40003800
0x40003000
0x40002C00
0x40002800
(inc. BKP 寄存器)
0x40002400
0x40001400
0x40001000
0x40000800
0x40000400
0x40000000
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
无
APB1
AHB
APB2
AHB
APB2
APB1
APB2
0x40006000
0x40005C00
0x40005800
0x40005400
0x40004800
0x40004400
0x40003800
0x40003000
0x40002C00
0x40002800
无
0x40001400
0x40001000
0x40000800
0x40000400
0x40000000
0xA0000000
0x50000000
0x40028000
0x40020400
0x40012000
0x40011C00
0x40018000
0x40012800
0x40013C00
0x40013400
0x40012C00
0x40006800
0x40006400
0x40005000
0x40004C00
0x40003C00
0x40002000
0x40001C00
0x40001800
0x40000C00
0x40006C00
0x40010000
3.4 RCC
STM32F1 系列与 L1 系列的 RCC(复位和时钟控制器)的主要差异如下表所示。
表 4:STM32F1 和 L1 系列的 RCC 差异
RCC 特性
MSI
F1 系列
无
L1 系列
说明
多种 RC 振荡器(64 kHz /128
kHz / 256 kHz / 512 kHz / 1.02
MHz / 2.05 MHz / 4.1 MHz)
使能:RCC_CR[MSION]
状态标志:RCC_CR[MSIRDY]
HSI
8M RC 振荡器
16M RC 振荡器
软件配置相同
使能:RCC_CR[HSION]
状态标志:RCC_CR[HSIRDY]
LSI
40KHZ
37KHZ
软件配置相同
使能:RCC_CSR[LSION]
状态标志:RCC_CSR[LSIRDY]
HSE
3-25M
1-24M
软件配置相同
取决于所用的产品
线
使能:RCC_CR[HSEON]
状态标志:RCC_CR[HSERDY]
LSE
32.768 kHz
32.768 kHz
LSE 的配置/状态位改到 RCC_CSR
PLL
互联型产品:主 PLL
主 PLL
使能 RCC_CR[PLLON]和状态标志
使能:RCC_CSR[LSEON]
状态标志:RCC_CSR[LSERDY]
L1 位置在 RCC_CSR[9:8]
F1 位置在 RCC_BDCR[1:0]
和两个副 PLL 为
I2S、以太网口和
OTG FS 提供时钟
其它产品:主 PLL
RCC_CR[PLLRDY]
没有变化
说起来 PLL 的配置实际上是不同的
(时钟源的选择,乘除因子),在
L1 系列中,有一个专用位
RCC_CFGR[PLLDIV]可以配置 PLL
的分频参数,所以 PLL 的乘法因子
是不同的。
PLL 的源只能来自 HSI 或 HSE.
系统时钟
HSI, HSE 或 PLL
MSI, HSI, HSE 或 PLL
软件配置相同
源
系统时钟
频率
最高可达 72MHZ
上电时使用 8M 的
32MHZ
上电时使用 2M 的 MSI 时钟
HSI 时钟
AHB 频
最高 72MHZ
最高 32MHZ
率
选择位:RCC_CFGR[SW]
状态标志:RCC_CFGR[SWS]
因为多出来一个 MSI 源,所以选择
位的含意有所不同
L1 系列 FLASH 的等待周期必须根
据系统频率、核心电压 Vcore 和电
源电压 VDD 调整适应
软件配置相同
配置位:RCC_CFGR[HPRE]
APB1 频
最高 36MHZ
最高 32MHZ
软件配置相同
率
配置位:RCC_CFGR[PPRE1]
APB2 频
最高 72MHZ
最高 32MHZ
软件配置相同
率
RTC 时钟
源
LSI, LSE 或
HSE/128
LSI, LSE 或 HSE
的/2,/4,/8 或/16
配置位:RCC_CFGR[PPRE2]
L1 系列的 RTCSEL[1:0]在寄存器
RCC_CSR[17:16],而 F1 系列的在
RCC_BDCR[9:8]
L1 系列的 RTCEN 在寄存器
RCC_CSR[22],而 F1 系列的在
RCC_BDCR[15]
在 L1 系列中,如果 HSE 被选作 RTC
的时钟源,则 RCC_CR[RTCPRE]
位用来选择分频因子
MCO 时
钟源
-MCO 管脚 (PA8)
-互联型产品:HSI,
HSE, PLL/2,
SYSCLK, PLL2,
PLL3 或 XT1
-其它产品:HSI,
HSE, PLL/2 或
SYSCLK
LSI 联接到 TIME5
的 CH4 IC:可以按
照 HSI/HSE 时钟测
量 LSI w/
内部振荡
器的
测量/校
准
MCO 管脚(PA8): MSI,SYSCLK,
L1 与 F1 的配置不同之处:
HSI, HSE, PLLCLK,
LSE 或 LSI
每个输出都可以配置预分频器 1,
2,4,8 或 16
预分频器是通过
RCC_CFGR[MCOPRE],时钟的选
择是通过 RCC_CFGR[MCOSEL]
不需要在 RCC 寄存器中配置
—LSI 联接到 TIM10 的 CH1 IC:
可以按照 HSI/HSE 时钟校正 LSI
w/
—LSE 联接到 TIM10 的 CH1 IC:
可以按照 HSI/HSE 时钟校正 LSE
w/
—HSE 联接到 TIM11 的 CH1 IC:
可 以 按 照 LSE/HSI 时 钟 校 正
HSE w/
—MSI 联接到 TIM11 的 CH1 IC:
可 以 按 照 HSI/HSE 时 钟 校 正
MSI w/
中断
—CSS(联接到 NMI
—CSS(联接到中断)
软件配置相同
中断)
—LSIRDY, LSERDY, HSIRDY,
在 RCC_CIR 寄存器中使能中断、取
—LSIRDY, LSERDY,
HSERDY, PLLRDY,
消中断或清除响应位
HSIRDY,
PLL2RDY 和 PLL3RDY(联接到
RCC 全局中断
HSERDY, PLLRDY,
PLL2RDY 和
PLL3RDY(联接到
RCC 全局中断)
高亮黄色表示不同之处