你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

各位大神帮帮忙,FSMC初始化失败

[复制链接]
黑皮男 提问时间:2015-6-18 16:47 /
本帖最后由 黑皮男 于 2015-6-18 16:58 编辑

代码如下,在初始化FSMC的时候,进入函数HAL_SRAM_Init中的FSMC_NORSRAM_Extended_Timing_Init函数中,调用MODIFY_REG对BWTR进行写的时候就跳到了HardFault_Handler,不知道有哪个地方配置错了,头一次整FSMC,请大神指点。
void LCD_IO_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;

        __GPIOB_CLK_ENABLE();
        __GPIOD_CLK_ENABLE();
        __GPIOE_CLK_ENABLE();
        __GPIOG_CLK_ENABLE();

        GPIO_InitStruct.Pin = GPIO_PIN_0;        //background lit
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

        GPIO_InitStruct.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;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        
        HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

        GPIO_InitStruct.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;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

        HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

        GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_12;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

        HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);

        
}
void LCD_FSMC_Init()
{
        SRAM_HandleTypeDef SramHandle;
        FSMC_NORSRAM_TimingTypeDef SRAM_Timing;
        FSMC_NORSRAM_TimingTypeDef SRAM_ExtTiming;
        SramHandle.Instance =FSMC_NORSRAM_DEVICE;

        __FSMC_CLK_ENABLE();
        
        SramHandle.Init.AsynchronousWait=FSMC_ASYNCHRONOUS_WAIT_DISABLE;
        SramHandle.Init.BurstAccessMode=FSMC_BURST_ACCESS_MODE_DISABLE;
        SramHandle.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
        SramHandle.Init.ExtendedMode=FSMC_EXTENDED_MODE_ENABLE;
        SramHandle.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
        SramHandle.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
        SramHandle.Init.NSBank = FSMC_NORSRAM_BANK4;
        SramHandle.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
        SramHandle.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
        SramHandle.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
        SramHandle.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
        SramHandle.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
        SramHandle.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;

        SRAM_Timing.AccessMode= FSMC_ACCESS_MODE_A;
        SRAM_Timing.AddressHoldTime = 0x00;
        SRAM_Timing.AddressSetupTime = 0x01;
        SRAM_Timing.BusTurnAroundDuration = 0x00;
        SRAM_Timing.CLKDivision = 0x00;
        SRAM_Timing.DataLatency = 0x00;
        SRAM_Timing.DataSetupTime = 0x0f;

        SRAM_ExtTiming.AccessMode = FSMC_ACCESS_MODE_A;
        SRAM_ExtTiming.AddressHoldTime = 0x00;
        SRAM_ExtTiming.AddressSetupTime = 0x00;
        SRAM_ExtTiming.BusTurnAroundDuration = 0x00;
        SRAM_ExtTiming.CLKDivision = 0x00;
        SRAM_ExtTiming.DataLatency = 0x00;
        SRAM_ExtTiming.DataSetupTime = 0x03;

        HAL_SRAM_Init(&SramHandle, &SRAM_Timing, &SRAM_ExtTiming);
        
}
void LCD_Init(void)
{
        LCD_IO_Init();
        LCD_FSMC_Init();


收藏 评论6 发布时间:2015-6-18 16:47

举报

6个回答
黑皮男 回答时间:2015-6-18 17:22:37
已调通,少了一条初始化语句,应加上SramHandle.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;如下
void LCD_FSMC_Init()
{
        SRAM_HandleTypeDef SramHandle;
        FSMC_NORSRAM_TimingTypeDef SRAM_Timing;
        FSMC_NORSRAM_TimingTypeDef SRAM_ExtTiming;
        SramHandle.Instance = LCDx;
        SramHandle.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
..................
小蚂蚁快溜跑 回答时间:2015-6-18 19:30:51
跟着学习
jacobfeng 回答时间:2015-6-19 08:55:31
调试就好,支持一下
ts2000 回答时间:2015-6-19 09:24:24
直接用别人的例子不好?还要自己写?
黑皮男 回答时间:2015-6-19 09:58:41
ts2000 发表于 2015-6-19 09:24
直接用别人的例子不好?还要自己写?

移植的,原来的是标准库,现在用的是HAL库
为什么是EEFOCUS小白 回答时间:2015-6-19 10:52:30
谢谢分享

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版