我要在外部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; 这个问题困扰我一个多月了,急于求解。 |
RE:STM32f103ze外部Flash的常量和数组地址定义问题
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位的啊,我前面单个定义常量就采用的连续地址,具体该怎么定义呢
RE:STM32f103ze外部Flash的常量和数组地址定义问题
RE:STM32f103ze外部Flash的常量和数组地址定义问题
直接进入这里,
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}也不知道哪里问题