野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9340|回复: 1

有没有大什佬知道STM32的FSMC模式A下有没有用到FSMC_NADV(PB7)

[复制链接]
发表于 2019-3-9 09:49:42 | 显示全部楼层 |阅读模式
本帖最后由 羽觞~~醉 于 2019-3-9 09:56 编辑

有没有大什佬知道STM32的FSMC模式A下有没有用到FSMC_NADV(PB7)
因为我用FSMC模式A的同时用了TIM4的通道2(PB7)来输出PWM波,结果发现CH1,CH3,CH4都能正常输出,就是CH2(PB7)不能输出

下面的是我配置的FSMC程序,液晶屏能正常使用,但PB7就是不能输出PWM波

tatic void ILI9325_FSMC_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
    FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  readWriteTiming;
    FSMC_NORSRAMTimingInitTypeDef  writeTiming;

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);            //使能FSMC时钟
    RCC_APB2PeriphClockCmd(ILI9325_BK_CLK|ILI9325_CS_CLK|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|ILI9325_CS_CLK|RCC_APB2Periph_AFIO,ENABLE);//使能PORTB,D,E,G以及AFIO复用功能时钟

     GPIO_InitStructure.GPIO_Pin = ILI9325_BK_PIN;                             //PB0 推挽输出 背光
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;           //推挽输出
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(ILI9325_BK_PORT, &GPIO_InitStructure);
   
    //PG0为FSMC_A10
    GPIO_InitStructure.GPIO_Pin = ILI9325_DC_PIN;     
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;            //复用推挽输出   
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(ILI9325_DC_PORT, &GPIO_InitStructure);
  //PG12为FSMC_NE4
  GPIO_InitStructure.GPIO_Pin = ILI9325_CS_PIN;     
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(ILI9325_CS_PORT, &GPIO_InitStructure);
   
     //PORTD复用推挽输出  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|GPIO_Pin_15;                 //    //PORTD复用推挽输出  
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;           //复用推挽输出   
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOD, &GPIO_InitStructure);
      
    //PORTE复用推挽输出  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;                 //    //PORTD复用推挽输出  
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;           //复用推挽输出   
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOE, &GPIO_InitStructure);

    readWriteTiming.FSMC_AddressSetupTime = 0x01;                      //地址建立时间(ADDSET)为2个HCLK 1/36M=27ns
  readWriteTiming.FSMC_AddressHoldTime = 0x00;                    //地址保持时间(ADDHLD)模式A未用到   
  readWriteTiming.FSMC_DataSetupTime = 0x0f;                          // 数据保存时间为16个HCLK,因为液晶驱动IC的读数据的时候,速度不能太快,尤其对1289这个IC。
  readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
  readWriteTiming.FSMC_CLKDivision = 0x00;
  readWriteTiming.FSMC_DataLatency = 0x00;
  readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;     //模式A
   

    writeTiming.FSMC_AddressSetupTime = 0x00;                              //地址建立时间(ADDSET)为1个HCLK  
  writeTiming.FSMC_AddressHoldTime = 0x00;                              //地址保持时间(A        
  writeTiming.FSMC_DataSetupTime = 0x03;                                  //数据保存时间为4个HCLK   
  writeTiming.FSMC_BusTurnAroundDuration = 0x00;
  writeTiming.FSMC_CLKDivision = 0x00;
  writeTiming.FSMC_DataLatency = 0x00;
  writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;              //模式A


  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAMx;                                                    //这里我们使用NE4 ,也就对应BTCR[6],[7]。
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;                 // 不复用数据地址
  FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;                                        // FSMC_MemoryType_SRAM;  //SRAM   
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;                    //存储器数据宽度为16bit   
  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;                    //  存储器写使能
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;   
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable;                         // 读写使用不同的时序
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;                         //读写时序
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming;                                      //写时序

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);                                                                           //初始化FSMC配置

  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);                                                                              // 使能BANK1
}


回复

使用道具 举报

发表于 2019-3-11 08:56:38 | 显示全部楼层
nandflash才需要用到
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-28 14:34 , Processed in 0.043305 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表