|
回复主题:请教一个FSMC的使用问题
详细流程如下 首先stm32f10x_map.h里边定义了 #define FSMC_R_BASE ((u32)0xA0000000) #define FSMC_Bank1_R_BASE (FSMC_R_BASE + 0x0000) 和 #define FSMC_Bank1 ((FSMC_Bank1_TypeDef *) FSMC_Bank1_R_BASE) 然后再程序里边定义了 /* FSMC NOR/SRAM Init structure definition */ typedef struct { u32 FSMC_Bank; u32 FSMC_DataAddressMux; u32 FSMC_MemoryType; u32 FSMC_MemoryDataWidth; u32 FSMC_BurstAccessMode; u32 FSMC_WaitSignalPolarity; u32 FSMC_WrapMode; u32 FSMC_WaitSignalActive; u32 FSMC_WriteOperation; u32 FSMC_WaitSignal; u32 FSMC_ExtendedMode; u32 FSMC_AsyncWait; u32 FSMC_WriteBurst; /* Timing Parameters for write and read access if the ExtendedMode is not used*/ FSMC_NORSRAMTimingInitTypeDef* FSMC_ReadWriteTimingStruct; /* Timing Parameters for write access if the ExtendedMode is used*/ FSMC_NORSRAMTimingInitTypeDef* FSMC_WriteTimingStruct; }FSMC_NORSRAMInitTypeDef;
对此结构体初始化后使用 /* Bank1 NOR/SRAM control register configuration */ FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank] = (u32)FSMC_NORSRAMInitStruct->FSMC_DataAddressMux | FSMC_NORSRAMInitStruct->FSMC_MemoryType | FSMC_NORSRAMInitStruct->FSMC_MemoryDataWidth | FSMC_NORSRAMInitStruct->FSMC_BurstAccessMode | FSMC_NORSRAMInitStruct->FSMC_WaitSignalPolarity | FSMC_NORSRAMInitStruct->FSMC_WrapMode | FSMC_NORSRAMInitStruct->FSMC_WaitSignalActive | FSMC_NORSRAMInitStruct->FSMC_WriteOperation | FSMC_NORSRAMInitStruct->FSMC_WaitSignal | FSMC_NORSRAMInitStruct->FSMC_ExtendedMode | FSMC_NORSRAMInitStruct->FSMC_AsyncWait | FSMC_NORSRAMInitStruct->FSMC_WriteBurst; 语句付值,由于FSMC_Bank1地址为0xA000 0000,所以应该从从memory窗口看到这个地方值的变化,但是JTAG仿真的时候这个地方的值没有任何变化.软仿的时候有变化.如果设定一个变量, 如tempsee= FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank]; 在软仿的时候读出来的值是对的,但是JTAG仿真的时候读出来的是0,而且似乎这个地方Datasheet上说Reset value: 0x0000 30XX,不知道为什么,两块板子都一样,芯片是103VE,下载线是ulink |
|