在线时间498 小时
UID331315
ST金币0
蝴蝶豆0
注册时间2015-6-4
论坛元老
- 最后登录
- 2019-5-28
|
a4a.1 32b0c
本帖最后由 haohao663 于 2016-6-16 11:42 编辑
【HAL库每天一例】系列例程从今天开始持续更新。。。。。
我们将坚持每天至少发布一个基于YS-F1Pro开发板的HAL库例程,
该系列例程将带领大家从零开始使用HAL库,后面会持续添加模块应用例程。
同样的,我们还程序发布基于HAL库的指导文档和视频教程,欢迎持续关注,并提出改进意见。
例程下载:
资料包括程序、相关说明资料以及软件使用截图
链接:https://pan.baidu.com/s/1i574oPv
密码:r3s3
(硬石YS-F1Pro开发板HAL库例程持续更新\1. 软件设计之基本裸机例程(HAL库版本)\YSF1_HAL-037. LCD-液晶显示)
/**
******************************************************************************
* 硬石YS-F1Pro开发板例程功能说明
*
* 例程名称: YSF1_HAL-037. LCD-液晶显示
*
******************************************************************************
* 说明:
* 本例程配套硬石stm32开发板YS-F1Pro使用。
*
* 淘宝:
* 论坛:硬石电子社区
* 版权归硬石嵌入式开发团队所有,请勿商用。
******************************************************************************
*/
【1】例程简介
FSMC:可变静态存储控制器,是STM32系列采用的一种新型的存储器扩展技术。一般可以用FSMC
接口与液晶驱动IC连接,实现数据交换。YS-F1Pro预留16bit的FSMC液晶接口,我们同时提供了
3.5寸TFT液晶模组供选购,该模组的液晶驱动IC型号为ILI9488。
本例程实现液晶模组显示和测试。
【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号 IO端口 目标功能引脚 出厂默认设置
JP1 PA10 TXD(CH340G) 已接入
JP2 PA9 RXD(CH340G) 已接入
【3】操作及现象
把3.5寸TFT液晶模组插入开发板中间液晶接口上,使用开发板配套的MINI USB线连接到开发板标
示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工具,设置参
数为115200 8-N-1。下载完程序之后,在串口调试助手窗口可接收到信息,同时液晶屏幕亮起来,
显示为蓝色,等一会循环随机变化显示颜色。
bsp_lcd.h文件内容
- #ifndef __BSP_LCD_H__
- #define __BSP_LCD_H__
- /* 包含头文件 ----------------------------------------------------------------*/
- #include "stm32f1xx_hal.h"
- /* 类型定义 ------------------------------------------------------------------*/
- typedef enum
- {
- USB_FONT_16=16,
- USB_FONT_24=24,
- }USB_FONT_Typdef;
- #define IS_USB_FONT(FONT) (((FONT) == USB_FONT_16) || ((FONT) == USB_FONT_24))
- /* 宏定义 --------------------------------------------------------------------*/
- /******************************************************************************
- 2^26 =0X0400 0000 = 64MB,每个 BANK 有4*64MB = 256MB
- 64MB:FSMC_Bank1_NORSRAM1:0X6000 0000 ~ 0X63FF FFFF
- 64MB:FSMC_Bank1_NORSRAM2:0X6400 0000 ~ 0X67FF FFFF
- 64MB:FSMC_Bank1_NORSRAM3:0X6800 0000 ~ 0X6BFF FFFF
- 64MB:FSMC_Bank1_NORSRAM4:0X6C00 0000 ~ 0X6FFF FFFF
- 选择BANK1-BORSRAM4 连接 TFT,地址范围为0X6C00 0000 ~ 0X6FFF FFFF
- YS-F1P开发板选择 FSMC_A0 接LCD的DC(寄存器/数据选择)脚
- 寄存器基地址 = 0X6C00 0000
- RAM基地址 = 0X6C00 0002 = 0X6C00 0000+(1<<(0+1))
- 如果电路设计时选择不同的地址线时,地址要重新计算
- *******************************************************************************/
- /******************************* ILI9488 显示屏的 FSMC 参数定义 ***************/
- #define FSMC_LCD_CMD ((uint32_t)0x6C000000) //FSMC_Bank1_NORSRAM1用于LCD命令操作的地址
- #define FSMC_LCD_DATA ((uint32_t)0x6C000002) //FSMC_Bank1_NORSRAM1用于LCD数据操作的地址
- #define LCD_WRITE_CMD(x) *(__IO uint16_t *)FSMC_LCD_CMD = x
- #define LCD_WRITE_DATA(x) *(__IO uint16_t *)FSMC_LCD_DATA = x
- #define LCD_READ_DATA() *(__IO uint16_t *)FSMC_LCD_DATA
- #define FSMC_LCD_BANKx FSMC_NORSRAM_BANK4
- /************************* ILI9488 显示屏8080通讯引脚定义 *********************/
- #define FSMC_LCD_CS_GPIO_ClK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
- #define FSMC_LCD_CS_PORT GPIOG
- #define FSMC_LCD_CS_PIN GPIO_PIN_12
- #define FSMC_LCD_DC_GPIO_ClK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
- #define FSMC_LCD_DC_PORT GPIOF
- #define FSMC_LCD_DC_PIN GPIO_PIN_0
- #define FSMC_LCD_BK_GPIO_ClK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
- #define FSMC_LCD_BK_PORT GPIOF
- #define FSMC_LCD_BK_PIN GPIO_PIN_10
-
- #define LCD_BK_ON() HAL_GPIO_WritePin(FSMC_LCD_BK_PORT, FSMC_LCD_BK_PIN, GPIO_PIN_SET);
- #define LCD_BK_OFF() HAL_GPIO_WritePin(FSMC_LCD_BK_PORT, FSMC_LCD_BK_PIN, GPIO_PIN_RESET);
- /**************** 显示方向选择,可选(1,2,3,4)四个方向 *************************/
- #define LCD_DIRECTION 1 // 原点在屏幕左上角 X*Y=320*480
- //#define LCD_DIRECTION 2 // 原点在屏幕右上角 X*Y=480*320
- //#define LCD_DIRECTION 3 // 原点在屏幕右下角 X*Y=320*480
- //#define LCD_DIRECTION 4 // 原点在屏幕左下角 X*Y=480*320
- /******** ILI934 显示屏全屏默认(扫描方向为1时)最大宽度和最大高度*************/
- #if (LCD_DIRECTION==1)||(LCD_DIRECTION==3)
- #define LCD_DEFAULT_WIDTH 320 // X轴长度
- #define LCD_DEFAULT_HEIGTH 480 // Y轴长度
-
- #else
- #define LCD_DEFAULT_WIDTH 480 // X轴长度
- #define LCD_DEFAULT_HEIGTH 320 // Y轴长度
-
- #endif
- /******************************* 定义 ILI9488 显示屏常用颜色 ********************************/
- #define BACKGROUND WHITE //默认背景颜色
- #define BLUE (uint16_t)0x001F //蓝色
- #define GREEN (uint16_t)0x07E0 //绿色
- #define RED (uint16_t)0xF800 //红色
- #define CYAN (uint16_t)0x07FF //蓝绿色,青色
- #define MAGENTA (uint16_t)0xF81F //红紫色,洋红色
- #define YELLOW (uint16_t)0xFFE0 //黄色
- #define LIGHTBLUE (uint16_t)0x841F
- #define LIGHTGREEN (uint16_t)0x87F0
- #define LIGHTRED (uint16_t)0xFC10
- #define LIGHTCYAN (uint16_t)0x87FF
- #define LIGHTMAGENTA (uint16_t)0xFC1F
- #define LIGHTYELLOW (uint16_t)0xFFF0
- #define DARKBLUE (uint16_t)0x0010
- #define DARKGREEN (uint16_t)0x0400
- #define DARKRED (uint16_t)0x8000
- #define DARKCYAN (uint16_t)0x0410
- #define DARKMAGENTA (uint16_t)0x8010
- #define DARKYELLOW (uint16_t)0x8400
- #define WHITE (uint16_t)0xFFFF //白色
- #define LIGHTGRAY (uint16_t)0xD69A
- #define GRAY (uint16_t)0x8410 //灰色
- #define DARKGRAY (uint16_t)0x4208
- #define BLACK (uint16_t)0x0000 //黑色
- #define BROWN (uint16_t)0xA145
- #define ORANGE (uint16_t)0xFD20
- /* 扩展变量 ------------------------------------------------------------------*/
- extern SRAM_HandleTypeDef hlcd;
- /* 函数声明 ------------------------------------------------------------------*/
- uint32_t BSP_LCD_Init(void);
- void LCD_SetDirection(uint8_t ucOtion);
- void LCD_OpenWindow(uint16_t usX,uint16_t usY,uint16_t usWidth,uint16_t usHeight);
- void LCD_Clear(uint16_t usX,uint16_t usY,uint16_t usWidth,uint16_t usHeight,uint16_t usColor);
- void LCD_SetPointPixel(uint16_t usX,uint16_t usY,uint16_t usColor);
- uint16_t LCD_GetPointPixel(uint16_t usX,uint16_t usY);
- void LCD_DrawLine(uint16_t usX1,uint16_t usY1,uint16_t usX2,uint16_t usY2,uint16_t usColor);
- void LCD_DrawRectangle(uint16_t usX_Start,uint16_t usY_Start, uint16_t usWidth,uint16_t usHeight,uint16_t usColor,uint8_t ucFilled);
- void LCD_DrawCircle(uint16_t usX_Center,uint16_t usY_Center,uint16_t usRadius,uint16_t usColor,uint8_t ucFilled);
- void LCD_DispChar_EN(uint16_t usX,uint16_t usY,const char cChar,uint16_t usColor_Background,uint16_t usColor_Foreground,USB_FONT_Typdef font);
- void LCD_DispString_EN(uint16_t usX,uint16_t usY,const char *pStr,uint16_t usColor_Background,uint16_t usColor_Foreground,USB_FONT_Typdef font);
- #endif /* __BSP_LCD_H__ */
复制代码
|
|