首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
ARM
» stm32f1的存储器与复位
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
stm32f1的存储器与复位
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2014-11-22 21:22
|
只看该作者
stm32f1的存储器与复位
寄存器
,
存储器
,
FLASH
,
产品
,
程序
一、存储器映射
1、统一编址,程序存储器、数据存储器、外设寄存器组织在一个4GB的地址空间。
2、小端格式
3、映像(stm32f107,256KB产品)
可以看到,所谓的256KB闪存,是指主存储,片上FLASH如下图所示:
介绍了片上的资源后,来看他们的地址映像。芯片将4GB的空间,划分为8个512MB的块(block),这些块有些是整块不用的,芯片对地址的安排可以参考数据手册,memory mapping章节中的那个图。只有block1、2、3、7是使用的。
地址中block7是核内的外设对应的地址,block2是其他外设对应的地址。block1的低地址64KB是片上SRAM,block0则如下图
option bytes即是选项字节;system memory就是系统存储,也即片上ROM;这两部分就是所谓信息块。Flash就是指主存储,有256KB。
再往下看alias to flash or system memory.....这个区域256KB就是启动开始的区域。这个区域并没有一个自己的存储器,只是根据BOOT0、BOOT1的接法来选择哪个存储器映射到这个地址上。如下图
选择用户闪存启动,是典型的做法;选择系统存储器,则在ST烧写进去的自举程序引导下,通过USART1下载程序;选择从SRAM执行代码则方便调试,比较快。
二、复位
CM3将复位视作异常,优先级最高的异常。
stm32f1有三种复位:系统复位、电源复位、备份区复位。
前两种是真正的复位,对他的响应由硬件完成,这个响应对软件流的影响是这样的:程序指针指向0x0000 0004,这个单元存储的是复位服务子程序(或者汇编叫子过程),同时从0x0000 0000获取堆栈顶的地址。不同的复位类型还有对其他寄存的不同复位方式,这就完成了复位。而备份区复位则不然,The backup domain has two specific resets that affect only the backup domain(参考手册6.1 reset章节)
零地址存放的是堆栈顶的地址,之后就是以Reset_Handler打头的向量表。
上面所说的向量表的存储从零地址开始,这是缺省的情况,可以通过NVIC的一个寄存器来重定向向量表。(权威指南7.3向量表)
三、flash读写
void flashwrite(u16 data)
{
FLASH_Unlock();
while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
FLASH->CR|=0x00000001; //set PG
*((u16 *)0x0803F800)=data;
while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
lxj= *((u16 *)0x0803F800);
FLASH_Lock();
}
void flashread()
{
FLASH_Unlock();
while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
// FLASH->CR|=0x00000001; //set PG
// *((u16 *)0x0803F800)=data;
// while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
lxj= *((u16 *)0x0803F800);
FLASH_Lock();
}
没仔细看,但能实现读写,不过用这两个函数的话,有一个bug,记下来回头研究。
flash必须先擦再写,flash_write以后,再写确实不行了,但再次上电,就能在同一个地址写了。而且flash确实烧写好了,掉电后数据不会消失
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议