无线路灯项目——STM32L151概述

STM32L151RCT 256KB 属于Cat.3
在stm32l1xx.h文件中,有下面一幅图,说明了不同容量的MCU应该用哪个startup.s文件
这里写图片描述
有关density和Cat名称的问题,ST官方给出下面的说法:
Replaced “Low density”, “Medium density”, “Medium+ density” and “High density” categories by Cat.1, Cat.2, Cat.3, Cat.4 and Cat.5 in all document.

下面是STM32L1系列中Cat.3的系统结构图
这里写图片描述
FLITF指的是The Flash memory interface。
在系统reset后,除了Flash和SRAM的时钟Enable,其他外设时钟都Disable,所以我们在初始化时,要Enable相应外设的时钟,这时要注意这个外设是挂在AHB还是APB总线上。
STM32F103的GPIO挂在APB2上,而在STM32L151中,GPIO挂在AHB上,当时调试L151时没注意到这点,导致在这上面花了点时间。

ST在Datasheet中用Non-volatile memory(NVM)代替了原来的Flash,NVM指的是非易失性的存储器,即断电不丢失,在L151中,NVM包括以下3个方面:
1.Flash,放置程序
2.EEPROM,放置用户数据
3.Information,包括bootloader等
STM32L151有0x0000 0000~0xFFFF FFFF共4GByte线性空间,外设、SRAM、FLASH等各种资源都集中在这4GByte中。

这里的AHB和APB都是全速,CPU最高32M,总线最高也能达到32M
APB(Advanced Peripheral Bus)一般是低速总线
AHB(Advanced High performance Bus)一般是高速总线

Bit-band
CM3的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实现了对单一比特的原子操作。位带操作仅适用于一些特殊的存储器区域中。例如下面的图,是将1MByte的SRAM的膨胀成了32MByte,由于要进行bit级操作,所以需要将1bit扩展成32bit(即1word),在位带区中,每个比特都映射到别名地址区的一个字——这是个只有 LSB才有效的字。
位带区与位带别名区的膨胀关系图
这里写图片描述

这里写图片描述

这里写图片描述

位带操作的优越性
1.位带操作对于硬件 I/O密集型的底层程序最有用处了
2.位带操作还能用来化简跳转的判断。当跳转依据是某个位时,以前必须这样做:
● 读取整个寄存器
● 掩蔽不需要的位
● 比较并跳转
现在只需:
从位带别名区读取状态位
● 比较并跳转
3.以前修改一个值需要经过“读-改-写”3条指令,导致这中间留有两个能被中断的空档,这在多任务系统中会引起系统紊乱。通过使用 CM3的位带操作,就可以消灭上述的紊乱。CM3把这个“读-改-写”做成一个硬件级别支持的原子操作,不能被中断。

请注意:当使用位带功能时,要访问的变量必须用volatile来定义。因为C编译器并不知道同一个比特可以有两个地址。所以就要通过 volatile,使得编译器每次都如实地把新数值写入存储器,而不再会出于优化的考虑,在中途使用寄存器来操作数据的复本,直到最后才把复本写回——这会导致按不同的方式访问同一个位会得到不一致的结果。

对于STM32L151,ST提供的库函数中,大部分还是没有使用bit-band,在stm32l1xx.h中,有下面的宏定义,能进行bit-band操作的有外设和SRAM两个部分,他们非位带操作的地址是(uint32_t)0x40000000 和 (uint32_t)0x20000000

#define SRAM_BB_BASE          ((uint32_t)0x22000000) /*!< SRAM base address in the bit-band region */
#define PERIPH_BB_BASE        ((uint32_t)0x42000000) /*!< Peripheral base address in the bit-band region */

GPIO
当GPIO配置为input时,无需考虑是推挽(PP)还是开漏(OD);无需考虑速度,这个速度是描述输出速度;无需考虑输出寄存器的值,因为它输出不了0或1。
这里写图片描述
这里写图片描述

【Reference】
《Cortex-M3权威指南》
http://blog.chinaunix.net/uid-26285146-id-3071387.html

原文地址:https://www.cnblogs.com/season-peng/p/6713505.html