中级会员
 
- 积分
- 225
- 金钱
- 225
- 注册时间
- 2015-12-17
- 在线时间
- 44 小时
|
1金钱
我的程序是这样的
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE); 打开时钟
void FSMC_Configuration(void) //初始化
{
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef WriteTiming;
FSMC_NORSRAMTimingInitTypeDef readWriteTiming;
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;// ?aà??ò??ê1ó?NE4 £?ò2?í??ó|BTCR[6],[7]?£
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; // 2??′ó?êy?Yμ??·
FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM; //SRAM
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//′?′¢?÷êy?Y?í?è?a16bit
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; // ′?′¢?÷D′ê1?ü
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; // ?áD′ê1ó?2?í?μ?ê±Dò
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; //?áD′ê±Dò
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &WriteTiming; //D′ê±Dò
WriteTiming.FSMC_AddressSetupTime = 15; //μ??·?¨á¢ê±??£¨ADDSET£??a1??HCLK
WriteTiming.FSMC_AddressHoldTime = 15; //μ??·±£3?ê±??£¨A
WriteTiming.FSMC_DataSetupTime = 255; ////êy?Y±£′?ê±???a4??HCLK
WriteTiming.FSMC_BusTurnAroundDuration= 15;
WriteTiming.FSMC_CLKDivision =16;
WriteTiming.FSMC_DataLatency = 17;
WriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; //?£ê?A
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //3?ê??ˉFSMC????
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE); // ê1?üBANK1
}
我目的是让 FSMC_D1位置1
#define Bank1_SRAM4_ADDR ((uint32_t)(0x6C000000))
#define GSM_POWER_ON FSMC_SRAM_WriteBuffer((uint32_t *)Bank1_SRAM4_ADDR,(uint16_t *)0x0002,1)
#define GSM_POWER_OFF FSMC_SRAM_WriteBuffer((uint32_t *)Bank1_SRAM4_ADDR,(uint16_t *)0x0000,1)
void FSMC_SRAM_WriteBuffer( uint32_t *pAddress,uint16_t* pBuffer,uint32_t n)
{
for(;n!=0;n--)
{
*(uint16_t*)(pAddress)=*pBuffer;
pAddress++;
pBuffer++;
}
}
这是所有的初始化和用到的函数 ,但是FSMC_D1不能够输出高电平 不知道哪里设置有问题,或者遗漏什么了,请大神指教
|
|