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

各位大神帮帮忙,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
调试就好,支持一下
小小超 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版