完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
代码如下,在初始化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(); } |
|
相关推荐
7个回答
|
|
|
已调通,少了一条初始化语句,应加上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; .................. |
|
|
|
|
|
跟着学习
|
|
|
|
|
|
调试就好,支持一下
|
|
|
|
|
|
直接用别人的例子不好?还要自己写?
|
|
|
|
|
|
|
|
|
|
|
|
谢谢分享
|
|
|
|
|
|
学习学习。。。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 23:43 , Processed in 0.839523 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1253