你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 8384|回复: 4

STM32f103ze外部Flash的常量和数组地址定义问题

[复制链接]

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-3-21 22:12:23 | 显示全部楼层 |阅读模式
我要在外部FLASH中保存数据,在绝对地址定义上遇到难题,在常量上我用
#define  ABC  ((u32)0x740001)
#define  BCD  ((u32)0x740002)
#define  CDE  ((u32)0x740003)
#define  DEF  ((u32)0x740004) //以上编译仿真都通过,但这样定义不知对不对,
但在定义常量数组时就不知道怎样定义了,采用类似定义,
#define  AAA【15】  ((u32)0x740005)
编译有警告,仿真会进入死循环。
在C51中我是这样定义的
uchar xdata ABC _at_ 0x1000;
.
.
uchar xdata  AAA[15]  _at_  0x1000;
这个问题困扰我一个多月了,急于求解。
 
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-3-22 11:21:07 | 显示全部楼层

RE:STM32f103ze外部Flash的常量和数组地址定义问题

定义数组不能这么定义,用const u32 AAA[15]
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-3-22 13:29:31 | 显示全部楼层

RE:STM32f103ze外部Flash的常量和数组地址定义问题

我也这么定义过,
const u32 AAA[15] __at (0x740008);
FSMC_NOR_WriteHalfWord(AAA[2] , 23334);//在此地址写入23334,仿真到这一步时进入死循环,如果我把地址0x740008改为0x740009,编译时就提示.\obj\aaa.axf: Error: L6984E: AT section lcd.o(.ARM.__AT_0x00740009) has required base address 0x00740009 which is not aligned to section alignment 0x00000004.我就不懂了,把类型改为u16也是不行,FLASH是16位的啊,我前面单个定义常量就采用的连续地址,具体该怎么定义呢
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-3-22 15:37:31 | 显示全部楼层

RE:STM32f103ze外部Flash的常量和数组地址定义问题

不能放在奇数地址,只能仿真偶数地址。这个是FLASH本身决定的。FSMC_NOR_WriteHalfWord(AAA[2] , 23334);//你应该进入这个里面,看看死在什么地方了。也许是你的值内容不对。
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2012-3-22 16:47:32 | 显示全部楼层

RE:STM32f103ze外部Flash的常量和数组地址定义问题

仿真时进入死循环,单步仿真,运行到FSMC_NOR_WriteHalfWord(AAA[2] , 23334);
直接进入这里,
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}也不知道哪里问题
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版