无线路灯项目——STM32L151概述

发布者:才富五车330最新更新时间:2020-02-20 来源: eefocus关键字:无线路灯  STM32L151  MCU 手机看文章 扫描二维码
随时随地手机看文章

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

关键字:无线路灯  STM32L151  MCU 引用地址:无线路灯项目——STM32L151概述

上一篇:stm32 adc dma多通道采样 数据错位 的解决方法
下一篇:STM32L151调试串口cubeMX

推荐阅读最新更新时间:2024-11-23 08:24

μCOS-II移植到ATmega128单片机上的介绍
引 言 本文介绍μC/OS-Ⅱ移植到ATMEL公司的8位微控制器ATmega128上的过程。所谓移植,就是使一个实时内核可以在某个微处理器上运行,并在此基础上进行驱动程序开发,使之成为一个实用的嵌入式系统。嵌入式系统包括了硬件和软件两部分,由于系统硬件资源的限制和实际应用的要求,应用系统对软件的基本要求是体积小,执行速度快,具有较好的裁减性和可移植性。嵌入式系统的软件一般由嵌入式操作系统和应用软件组成,通过在操作系统之上开发应用软件,可以屏蔽掉很多底层硬件细节,使得应用程序调试方便,移植简单,易维护,同时开发周期也短。多数实时操作系统为用户提供一些标准的API函数,程序开发人员可以利用这些API函数进行应用程序开发。但是
[单片机]
芯圣电子超值型8位触摸单片机——HC89F30XC系列
HC89F30XC系列是芯圣电子推出的超值型8位触摸单片机,内置增强型8051内核,拥有16K的ROM、256Bytes的IRAM以及512Bytes的XRAM;HC89F30XC系列拥有丰富的外设资源,包括4个16位的定时/计数器、1组12位带死区控制互补与1组8位的PWM、最高16+2 路12位的ADC、1个SPI、1个UART以及1个IIC;HC89F30XC全系列支持引脚映射,并配备完整的触摸库。 以下为该系列目前在售的三款型号及对应参数: HC89F30XC全系列拥有多种封装,资源丰富,具有高性价比的优势,可以广泛应用于市面上消费类产品,例如空气炸锅、饭煲、取暖器、空气净化器等。
[单片机]
芯圣电子超值型8位触摸<font color='red'>单片机</font>——HC89F30XC系列
单片机与PLC详细比较
要搞清楚单片机与PLC的异同,首先得明确什幺是单片机,什幺是PLC。对此,我们简要回顾一下计算机的发展历程也许有帮助,按计算机专家的原始定义, 计算机系统由五大部分--即控制单元(CU)、算术运算单元(ALU)、存储器(Memory)、输入设备(Input)、输出设备(Output)组 成。早期计算机(晶体管的或集成电路的,不包括电子管的)的CU或ALU由一块甚至多块电路板组成,CU和ALU是分离的,随着集成度的提高,CU和 ALU合在一块就组成了中央处理单元(CPU),接着将CPU集成到单块集成电路中就产生MPU或MCU,出现了如Intel4004、8008、 8080,8085、8086、8088、Z80等MPU。此后,MPU
[单片机]
单片机C语言模块化编程方法
当你在一个项目小组做一个相对较复杂的工程时,意味着你不再独自单干。你需要和你的小组成员分工合作,一起完成项目,这就要求小组成员各自负责一部分工程。比如你可能只是负责通讯或者显示这一块。这个时候,你就应该将自己的这一块程序写成一个模块,单独调试,留出接口供其它模块调用。最后,小组成员都将自己负责的模块写完并调试无误后,由项目组长进行组合调试。像这些场合就要求程序必须模块化。模块化的好处是很多的,不仅仅是便于分工,它还有助于程序的调试,有利于程序结构的划分,还能增加程序的可读性和可移植性。 初学者往往搞不懂如何模块化编程,其实它是简单易学,而且又是组织良好程序结构行之有效的方法之一. 本文将先大概讲一下模块化的方法和注意事项,最后将以
[单片机]
<font color='red'>单片机</font>C语言模块化编程方法
单片机控制程序的设计
本系统中单片机AT89C51负责键盘处理、各工作状态的串行显示,以及配合∏)GA测控和频率的预置,具体包括单片机主程序,预置频率加1子程序,预置频率减1子程序,键扫子程序,测频率子程序,显示子程序等程序,各程序的流程图如图1 ~图6 所示。   图1 单片机主程序流程图   图2 预置频率加1子程序流程图   图3 预置频率减1子程序流程图   图4 键扫子程序流程图   图5 测频率子程序流程图   图6 显示子程序流程图
[单片机]
<font color='red'>单片机</font>控制程序的设计
基于51单片机实钟、土壤湿度检测、空气温度检测程序
项目是在相应环境中检测土壤湿度,以及检测空气温度。 软件环境:Keil C51软件 硬件环境:KST 51开发( 自带 温度、显示器模块) 使用模块: 土壤湿度传感器 PCF8591 AD转换模块 DS1302时钟模块 土壤湿度传感器 1.传感器适用于土壤的湿度检测 2.比较器采用LM393芯片,工作性能稳定 3.工作电压3.3V-5V 4.模块中蓝色的电位器是用于土壤湿度的阀值调节,顺时针调节,控制的湿度会越大,逆时针越小; 5.数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测土壤湿度; 6.小板模拟量输出AO可以和AD模块相连,通过AD转换,可以获得土壤湿度更精确的数值; PCF8591 AD转
[单片机]
谈51单片机实物与仿真差异
此仿真以protues8为例 首先我们不得不承认仿真的的优点,元件库庞大,仿真效果好,线路简单,操作简化用于小工程效果实现有很大的帮助。 实物,这是真正看得见摸得着的东西,但是工程量庞大,不适用于庞大的工程试验。 对于初学者而言,更多的还用实物,从焊接到调试,从故障到成功,是一个很好的学习过程,而电子仿真可以做为辅助作用的工具,不能用于主要学习的手段,有时候只有仿真效果出来了,做出实物才更加方便快捷,所以对于51单片机而言设计电路,我的步骤是先设计仿真电路,等到理想状态效果出来后在着手调试实际电路,这时候会发现仿真和实际的效果有很大的差异,这时候就是调试和学经验好时候。有些人会说步骤太过于繁琐直接仿真或者用实物不是更好吗?
[单片机]
一种P89LPC93X单片机控制的大功率铅酸电池充电器设计
随着全球环保意识的增强,使用铅酸电池的各种车辆不断进入人们的视野,然而目前世界上用于铅酸电池的充电器却是五花八门。这些充电器造成铅酸电池过充或充电不足的现象时有发生,后果是铅酸电池的使用寿命降低。在大功率铅酸电池充电器的设计中,减小功率损失,按照经验的优化曲线实现充电,是保障铅酸电池使用寿命的理想方法。为此,笔者设计一种单片机控制的实用大功率铅酸电池充电器。 1 充电器的硬件结构 在充电器初级回路的主电源设计中,采用了PFC+移相全桥的拓扑结构,在充电器次级回路设计中,为了实现对电池状态的监控,并能按照经验的优化曲线对电池进行充电,加入了单片机控制。这种充电器的硬件结构框图如图1所示。 在充电器的输入回路中,
[单片机]
一种P89LPC93X<font color='red'>单片机</font>控制的大功率铅酸电池充电器设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved