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
上一篇:stm32 adc dma多通道采样 数据错位 的解决方法
下一篇:STM32L151调试串口cubeMX
推荐阅读最新更新时间:2024-11-23 08:24
设计资源 培训 开发板 精华推荐
- LTC3412EFE 演示板,2.5A 单片,同步。降压稳压器,2.5-5.5Vin,跳线可选 1.8、2.5 或 3.3Vout @ 2.5A
- 智能语音控制器
- 907电烙铁
- LT1086IM 受保护大电流灯驱动器的典型应用
- LTM8061-8.4 演示板、32v、2A 模块电池充电器
- 使用 Analog Devices 的 LT3663IDCB-3.3 的参考设计
- Super Dial 电机旋钮屏——内测中
- 具有集成升压和捕捉二极管的 LT3470ITS8 微功率降压稳压器的典型应用电路
- PAM8610 10W立体声D类音频功率放大器的典型应用
- AR0234CSSM00SUKAH3-GEVB:带有 2MP 单声道 0deg 全局快门 CMOS 图像传感器的 2.3MP 评估板