STM32F429第二十五篇之MCU屏实验详解
发布日期:2021-05-14 11:31:51 浏览次数:20 分类:精选文章

本文共 7117 字,大约阅读时间需要 23 分钟。

F429������SRAM������������������MCU������������������������

������

������������������������������SRAM������������F429������MCU������������������������������������������������������������

  • MCU���������
  • SRAM������������FMC������������HAL������������
  • ���������������������������������������1������������������������������������

  • LED���������������
  • ������������������������������
  • ������������������������������������������

  • ������������

    ���������������������������������������������

  • 16���������������������������������������
  • A18������������������/������
  • NE1������������������
  • NWE���������������
  • NOE���������������
  • BL������������������

  • ������������

    ���������������

    SRAM_HandleTypeDef

    /**
    * @brief SRAM handle Structure definition
    */
    #ifndef USE_HAL_SRAM_REGISTER_CALLBACKS
    typedef struct __SRAM_HandleTypeDef {
    FMC_NORSRAM_TypeDef *Instance;
    FMC_NORSRAM_EXTENDED_TypeDef *Extended;
    FMC_NORSRAM_InitTypeDef Init;
    HAL_LockTypeDef Lock;
    __IO HAL_SRAM_StateTypeDef State;
    _DMA_HandleTypeDef *hdma;
    #if USE_HAL_SRAM_REGISTER_CALLBACKS
    void (* MspInitCallback)(struct __SRAM_HandleTypeDef *hsram);
    void (* MspDeInitCallback)(struct __SRAM_HandleTypeDef *hsram);
    void (* DmaXferCpltCallback)(DMA_HandleTypeDef *hdma);
    void (* DmaXferErrorCallback)(DMA_HandleTypeDef *hdma);
    #endif
    } SRAM_HandleTypeDef;
    #endif

    FMC_NORSRAM_InitTypeDef

    /**
    * @brief FMC NORSRAM Configuration Structure definition
    */
    typedef struct {
    uint32_t NSBank;
    uint32_t DataAddressMux;
    uint32_t MemoryType;
    uint32_t MemoryDataWidth;
    uint32_t BurstAccessMode;
    uint32_t WaitSignalPolarity;
    uint32_t WrapMode;
    uint32_t WaitSignalActive;
    uint32_t WriteOperation;
    uint32_t WaitSignal;
    uint32_t ExtendedMode;
    uint32_t AsynchronousWait;
    uint32_t WriteBurst;
    uint32_t ContinuousClock;
    uint32_t WriteFifo;
    uint32_t PageSize;
    } FMC_NORSRAM_InitTypeDef;

    ������������

    /** FMC_NORSRAM������������ */
    #define FMC_NORSRAM_DEVICE FMC_Bank1
    /** FMC������������������ */
    #define FMC_R_BASE 0xA0000000UL
    /** FMC������������������������ */
    #define FMC_NORSRAM_EXTENDED_DEVICE FMC_Bank1E
    #define FMC_Bank1E_R_BASE (FMC_R_BASE + 0x0104UL)

    ���������������

    /** HAL��������������� */
    typedef enum {
    HAL_UNLOCKED = 0x00U,
    HAL_LOCKED = 0x01U
    } HAL_LockTypeDef;

    ������������

    /** SRAM������������ */
    typedef enum {
    HAL_SRAM_STATE_RESET = 0x00U,
    HAL_SRAM_STATE_READY = 0x01U,
    HAL_SRAM_STATE_BUSY = 0x02U,
    HAL_SRAM_STATE_ERROR = 0x03U,
    HAL_SRAM_STATE_PROTECTED = 0x04U
    } HAL_SRAM_StateTypeDef;

    FMC_NORSRAM_TimingTypeDef

    /**
    * @brief FMC NORSRAM Timing parameters structure definition
    */
    typedef struct {
    uint32_t AddressSetupTime;
    uint32_t AddressHoldTime;
    uint32_t DataSetupTime;
    uint32_t BusTurnAroundDuration;
    uint32_t CLKDivision;
    uint32_t DataLatency;
    uint32_t AccessMode;
    } FMC_NORSRAM_TimingTypeDef;

    ���������

    int main(void) {
    u8 x = 0;
    u8 lcd_id[12];
    /* ��������������� */
    HAL_Init();
    Stm32_Clock_Init(360, 25, 2, 8);
    delay_init(180);
    uart_init(115200);
    LED_Init();
    LCD_Init();
    /* ��������������� */
    POINT_COLOR = RED;
    sprintf((char *)lcd_id, "LCD ID:%04X", lcddev.id);
    /* while������ */
    while (1) {
    switch (x) {
    case 0:
    LCD_Clear(WHITE);
    break;
    case 1:
    LCD_Clear(BLACK);
    break;
    case 2:
    LCD_Clear(BLUE);
    break;
    case 3:
    LCD_Clear(RED);
    break;
    case 4:
    LCD_Clear(MAGENTA);
    break;
    case 5:
    LCD_Clear(GREEN);
    break;
    case 6:
    LCD_Clear(CYAN);
    break;
    case 7:
    LCD_Clear(YELLOW);
    break;
    case 8:
    LCD_Clear(BRRED);
    break;
    case 9:
    LCD_Clear(GRAY);
    break;
    case 10:
    LCD_Clear(LGRAY);
    break;
    case 11:
    LCD_Clear(BROWN);
    break;
    }
    POINT_COLOR = RED;
    LCD_ShowString(10, 40, 240, 32, 32, "Apollo STM32F4/F7");
    LCD_ShowString(10, 80, 240, 24, 24, "TFTLCD TEST");
    LCD_ShowString(10, 110, 240, 16, 16, "ATOM@ALIENTEK");
    LCD_ShowString(10, 130, 240, 16, 16, lcd_id);
    LCD_ShowString(10, 150, 240, 12, 12, "2016/1/6");
    x++;
    if (x == 12) x = 0;
    LED0 = !LED0;
    delay_ms(1000);
    }
    }

    ���������������

    ���35510������������D/CX���������������������������������������������

    • A18������������������������D/CX���������������������������������������
    • A18������������������������D/CX���������������������������������������

    SRAM���������

    HAL_SRAM_Init

    HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FMC_NORSRAM_TimingTypeDef *Timing, FMC_NORSRAM_TimingTypeDef *ExtTiming) {
    if (hsram == NULL) {
    return HAL_ERROR;
    }
    if (hsram->State == HAL_SRAM_STATE_RESET) {
    hsram->Lock = HAL_UNLOCKED;
    #if USE_HAL_SRAM REGISTER_CALLBACKS
    if (hsram->MspInitCallback == NULL) {
    hsram->MspInitCallback = HAL_SRAM_MspInit;
    }
    hsram->DmaXferCpltCallback = HAL_SRAM_DMA_XferCpltCallback;
    hsram->DmaXferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
    hsram->MspInitCallback(hsram);
    #else
    HAL_SRAM_MspInit(hsram);
    #endif
    }
    FMC_NORSRAM_Init(hsram->Instance, &hsram->Init);
    FMC_NORSRAM_Timing_Init(hsram->Instance, Timing, hsram->Init.NSBank);
    FMC_NORSRAM_Extended_Timing_Init(hsram->Extended, ExtTiming, hsram->Init.NSBank, hsram->Init.ExtendedMode);
    __FMC_NORSRAM_ENABLE(hsram->Instance, hsram->Init.NSBank);
    return HAL_OK;
    }

    HAL_SRAM_MspInit

    void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram) {
    __HAL_RCC_FMC_CLK_ENABLE();
    __HAL_RCC_GPIOD_CLK_ENABLE();
    __HAL_RCC_GPIOE_CLK.EnablePopup();
    GPIO_InitTypeDef GPIO_Initure = {GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15};
    GPIO_Initure.Mode = GPIO_MODE_AF_PP;
    GPIO_Initure.Pull = GPIO_PULLUP;
    GPIO_Initure.Speed = GPIO_SPEED_HIGH;
    GPIO_Initure.Alternate = GPIO_AF12_FMC;
    HAL_GPIO_Init(GPIOD, &GPIO_Initure);
    GPIO_Initure.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;
    HAL_GPIO_Init(GPIOE, &GPIO_Initure);
    }

    ������������

    ���������������������������������������LCD_ShowString���������������������������������������������������

  • ���ASCII���������������LCD���������������
  • ������LCD_Fast_DrawPoint������������������������������������

  • ������������������������������������������������������SRAM������������F429������MCU���������������������������������������������������������������������������HAL������������������������������������������

    上一篇:ACM【倒蛇填数】:
    下一篇:STM32F429第二十四篇之SRAM原理

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月14日 16时31分50秒