×
单片机 > 单片机程序设计 > 详情

无线路灯项目——STM32L151概述

发布时间:2020-08-26 发布时间:
|

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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会