gd32 EXMC 初始化

这篇博客介绍了如何初始化GD32的EXMC总线以连接LCD,包括GPIO配置、时序设置和NOR SRAM初始化步骤,适用于STM32开发者。
摘要由CSDN通过智能技术生成

兆易创新EXMC 总线跟STM32  FMSC类似;

下面是接线图:

void exmc_lcd_init(void)
{
    exmc_norsram_parameter_struct lcd_init_struct;
    exmc_norsram_timing_parameter_struct lcd_timing_init_struct;

    /* EXMC clock enable */
    rcu_periph_clock_enable(RCU_EXMC);

    /* GPIO clock enable */
    rcu_periph_clock_enable(RCU_GPIOD);
    rcu_periph_clock_enable(RCU_GPIOE);

    /* configure EXMC_D[0~15]*/
    /* PD14(EXMC_D0), PD15(EXMC_D1),PD0(EXMC_D2), PD1(EXMC_D3), PD8(EXMC_D13), PD9(EXMC_D14), PD10(EXMC_D15) */
    gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1| GPIO_PIN_8 | GPIO_PIN_9 |
                                                         GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15);

    /* PE7(EXMC_D4), PE8(EXMC_D5), PE

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我可以提供以下的初始化代码,以实现GD32F450IIH6的EXMC同步模式初始化: 1. 首先,需要在库文件中定义EXMC参数结构体,代码如下: ``` typedef struct { uint32_t EXMC_AddressSetupTime; uint32_t EXMC_AddressHoldTime; uint32_t EXMC_DataSetupTime; uint32_t EXMC_BusTurnAroundDuration; uint32_t EXMC_CLKDivision; uint32_t EXMC_DataLatency; uint32_t EXMC_AccessMode; } EXMC_NORSRAMTimingInitPara; ``` 2. 然后,需要定义EXMC初始化函数,代码如下: ``` void EXMC_NORSRAMInit(EXMC_NORSRAMInitPara* EXMC_NORSRAMInitStruct, EXMC_NORSRAMTimingInitPara* EXMC_NORSRAMTimingInitStruct) { /* 1. 配置NORSRAM的时序参数 */ EXMC_NORSRAMTimingInit(EXMC_NORSRAMTimingInitStruct); /* 2. 配置NORSRAM的初始化参数 */ EXMC_NORSRAMInitStruct->EXMC_AsyncWait = EXMC_AsyncWait_Disable; EXMC_NORSRAMInitStruct->EXMC_ExtendedMode = EXMC_ExtendedMode_Disable; EXMC_NORSRAMInitStruct->EXMC_WriteMode = EXMC_WriteMode_Enable; EXMC_NORSRAMInitStruct->EXMC_WaitSignal = EXMC_WaitSignal_Disable; EXMC_NORSRAMInitStruct->EXMC_WrapBurstMode = EXMC_WrapBurstMode_Disable; EXMC_NORSRAMInitStruct->EXMC_WriteBurstMode = EXMC_WriteBurstMode_Disable; EXMC_NORSRAMInitStruct->EXMC_ReadWriteTimingStruct = EXMC_NORSRAMTimingInitStruct; EXMC_NORSRAMInitStruct->EXMC_WriteTimingStruct = EXMC_NORSRAMTimingInitStruct; /* 3. 调用库函数进行初始化 */ EXMC_NORSRAMInit(EXMC_NORSRAMInitStruct); } ``` 3. 最后,需要在主函数中调用EXMC初始化函数,如下所示: ``` int main(void) { /* 1. 定义EXMC参数结构体 */ EXMC_NORSRAMInitPara EXMC_NORSRAMInitStruct; EXMC_NORSRAMTimingInitPara EXMC_NORSRAMTimingInitStruct; /* 2. 配置EXMC时序参数 */ EXMC_NORSRAMTimingInitStruct.EXMC_AddressSetupTime = 4; EXMC_NORSRAMTimingInitStruct.EXMC_AddressHoldTime = 2; EXMC_NORSRAMTimingInitStruct.EXMC_DataSetupTime = 8; EXMC_NORSRAMTimingInitStruct.EXMC_BusTurnAroundDuration = 1; EXMC_NORSRAMTimingInitStruct.EXMC_CLKDivision = 2; EXMC_NORSRAMTimingInitStruct.EXMC_DataLatency = 2; EXMC_NORSRAMTimingInitStruct.EXMC_AccessMode = EXMC_AccessMode_A; /* 3. 调用EXMC初始化函数 */ EXMC_NORSRAMInit(&EXMC_NORSRAMInitStruct, &EXMC_NORSRAMTimingInitStruct); /* 4. 主函数其他代码 */ return 0; } ``` 以上是一个简单的初始化代码示例,其中需要根据具体的需求进行调整。同时,需要注意在使用EXMC前,还需要开启EXMC时钟和GPIO时钟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值