本文使用FSMC驱动LCD显示,关于建议先看之前的7、STM32 FSMC驱动SRAM一文
硬件连接:
一、CubeMx配置FSMC驱动LCD ILI93xx
此章只为快速使用LCD,不涉及原理、指令说明
显示屏驱动文件参考正点探索者
1、CubeMx图形配置
此处的时序还可以调整,配置的满足要求,没细究
生成工程…
2、添加文件至工程
文件可以在下面工程中获取
注意:文件中操作的是FSMC对应的NE4相应地址,
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A6作为数据命令区分线
//注意设置时STM32内部会右移一位对其! 111 1110=0X7E
#define LCD_BASE ((uint32_t)(0x6C000000 | 0x0000007E))
#define TFT_LCD ((LCD_TypeDef *) LCD_BASE)
2、LCD代码编写
A、ILI93xx.h修改背光引脚宏
B、main.c文件添加编写串口printf所需函数、stdio.h、初始化LCD、字符串显示
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "fsmc.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "ILI93xx.h"
#include "stdio.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/****************************************************
@function:串口重定义
@param:void
@return:void
@date:2023.2.14
@note:使用printf时需要此函数,并在Keil魔术棒中勾选User MicroLIB库
****************************************************/
int fputc(int ch,FILE *f)
{
uint8_t data = ch;
HAL_UART_Transmit(&huart1,&data,1,1);
return(ch);
}
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_FSMC_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
TFTLCD_Init();
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(30,50,200,16,16,"STM32F4 FSMC LCD");
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
3、文件下载:
部分文件:
链接:https://pan.baidu.com/s/1b-GrxnUoKsuabGLw4vK1Pw
提取码:vm16
完成工程:
链接:https://pan.baidu.com/s/1NrQoqWxm4E5wkiq_9IUPxQ
提取码:9utl