最后调试了调试,发现我用的库
FSMC_Bank1->BTCR[FSMC_NORSRAMInitStruct->FSMC_Bank+1] =
(uint32_t)FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressSetupTime |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AddressHoldTime << 4) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataSetupTime << 8) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_BusTurnAroundDuration << 16) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_CLKDivision << 20) |
(FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_DataLatency << 24) |
FSMC_NORSRAMInitStruct->FSMC_ReadWriteTimingStruct->FSMC_AccessMode;
代码是不安全的,因为只是或的方式赋值,逐步调试到了这里,里面的变量很乱,不是我想要的值。。
找了师傅帮我看了看,指出
FSMC_NORSRAMTimingInitTypeDef p; 这句没有给变量赋初值,里面是乱码,这样跑库给的函数时相或是很不安全的。加了一句 清零语句。
memset((unsigned char *)&p, 0, sizeof(FSMC_NORSRAMTimingInitTypeDef));
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef p;
memset((unsigned char *)&p, 0, sizeof(FSMC_NORSRAMTimingInitTypeDef));
/*-- FSMC Configuration ------------------------------------------------------*/
/* FSMC_Bank1_NORSRAM4 timing configuration */
p.FSMC_CLKDivision =0x09;
p.FSMC_DataLatency =0x01;
p.FSMC_AccessMode = FSMC_AccessMode_A;
就搞定了!
下次用库的时候还是因该谨慎谨慎!
|