gd32 exmc 连接 mcu 8080TFT 驱动(8pin/16pin)ST7789,40帧每秒240*320;


#include "gd32e50x.h"
#if    0  //RS~A23   16根数据线
#define BANK0_LCD_D         ((uint32_t)0x61000000)    //LCD data address,RS~A23 16线  2^23*2=0x1000000 
#define BANK0_LCD_C         ((uint32_t)0x60000000)    //LCD register address Alternate2: EXMC_NE0=PD7~LCD_CS
#define LCD_WR_DATA(value)    ((*(__IO uint16_t*)(BANK0_LCD_D)) = ((uint16_t)(value)))     //写数据寄存器  16根数据线
#define LCD_WR_REG(index)    ((*(__IO uint16_t*)(BANK0_LCD_C)) = ((uint16_t)index))         //写命令寄存器
#else  //RS~A23 8根数据线
#define BANK0_LCD_D         ((uint32_t)0x60800000)    // LCD data address,RS~A23 8线 2^23=0x800000
#define BANK0_LCD_C         ((uint32_t)0x60000000)    // LCD register address,Alternate2: EXMC_NE0=PD7~LCD_CS 
#define LCD_WR_DATA(value)    ((*(__IO uint8_t*)(BANK0_LCD_D)) = ((uint8_t)(value)))     //写数据寄存器  8根数据线
#define LCD_WR_REG(index)    ((*(__IO uint8_t*)(BANK0_LCD_C)) = ((uint8_t)index))         //写命令寄存器
#endif
 

void lcd_open_window(uint16_t start_x,uint16_t start_y,uint16_t width,uint16_t heigth)
{
     
    LCD_WR_REG(0x2A);  //设置X范围坐标

    LCD_WR_DATA(start_x>>8);                                //起始点高8位
    LCD_WR_DATA(start_x&0x00FF);                        //起始点低8位

    LCD_WR_DATA((start_x+width-1)>>8);          //结束点高8位
    LCD_WR_DATA((start_x+width-1)&0x00FF);    //结束点低8位

    LCD_WR_REG(0X2B);     //设置Y范围坐标

    LCD_WR_DATA(start_y>>8);                                    //起始点高8位
    LCD_WR_DATA(start_y&0x00FF);                            //起始点低8位
    /* pate end */
    LCD_WR_DATA((start_y+heigth-1)>>8);                //结束点高8位
    LCD_WR_DATA((start_y+heigth-1)&0x00FF);        //结束点低8位
    
    LCD_WR_REG(0x2C);       //开始写入GRAM lcd_gram_write_prepare();

}

#define  LCD_RST       GPIO_PIN_15
#define  LCD_RST_PORT  GPIOE
void LCD_Init_st7789(void)
{
    int i;
    #define  LCD_Write_Cmd  LCD_WR_REG
    #define  LCD_Write_Data  LCD_WR_DATA
    
#define WHITE              0xffff//  LCD_COLOR_WHITE
#define BALCK              0//  LCD_COLOR_BLACK
    /* 初始化和LCD通信的引脚 */
//    LCD_GPIO_Init();
//    HAL_Delay(120);
    gpio_init(GPIOE,GPIO_MODE_OUT_PP,GPIO_OSPEED_2MHZ,LCD_RST);
    gpio_bit_write(GPIOE, LCD_RST,(bit_status)1);
    gpio_bit_write(GPIOE, LCD_RST,(bit_status)0);delay_1ms(20)

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值