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;
这个问题困扰我一个多月了,急于求解。
RE:STM32f103ze外部Flash的常量和数组地址定义问题
定义数组不能这么定义,用const u32 AAARE: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位的啊,我前面单个定义常量就采用的连续地址,具体该怎么定义呢
RE:STM32f103ze外部Flash的常量和数组地址定义问题
不能放在奇数地址,只能仿真偶数地址。这个是FLASH本身决定的。FSMC_NOR_WriteHalfWord(AAA , 23334);//你应该进入这个里面,看看死在什么地方了。也许是你的值内容不对。RE:STM32f103ze外部Flash的常量和数组地址定义问题
仿真时进入死循环,单步仿真,运行到FSMC_NOR_WriteHalfWord(AAA , 23334);直接进入这里,
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}也不知道哪里问题
页:
[1]