stm32liao 发表于 2012-3-21 22:12:23

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

我要在外部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  _at_  0x1000;
这个问题困扰我一个多月了,急于求解。
 

发表于 2012-3-22 11:21:07

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

定义数组不能这么定义,用const u32 AAA

stm32liao 发表于 2012-3-22 13:29:31

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

我也这么定义过,
const u32 AAA __at (0x740008);
FSMC_NOR_WriteHalfWord(AAA , 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位的啊,我前面单个定义常量就采用的连续地址,具体该怎么定义呢

发表于 2012-3-22 15:37:31

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

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

stm32liao 发表于 2012-3-22 16:47:32

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

仿真时进入死循环,单步仿真,运行到FSMC_NOR_WriteHalfWord(AAA , 23334);
直接进入这里,
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}也不知道哪里问题
页: [1]
查看完整版本: STM32f103ze外部Flash的常量和数组地址定义问题