首先,配置时钟树,时钟树的配置在我的另外一篇博客里,这里不再赘述.
LCD与LED具有共同的IO口,同时创建工程较好.
打开原理图,发现LED的IO口是PC8~PC15,还有一个容易看漏的PD2.LCD的IO口是PC0到PC15.
当然,看产品手册也可以知道,但是还是推荐大家看原理图.
打开cubumx,给PC0~PC15,还有PD2设置GPIO_OutPut.
点开GPIO的设置,将PC8~PC15设置成High与Pull-up.
PD2只设置为Low就可以了,其余IO口不做处理.
打开文件夹存储的位置,创建新文件夹,命名bsp(随意命名,自己知道就好,后续用来存放.c与.h文件.
打开keil5,创建led.c与led.h文件,放到dsp文件夹里面.
打开蓝桥杯嵌入式资源包,液晶驱动参考程序->MDK5_LCD_HAL,里面有src,inc文件夹,将src文件夹里面的LCD.c复制到bsp文件夹里,将inc文件夹里的LCD.h与fonts.h放到bsp文件夹里.
打开产品手册,按照指示设置相应操作.所有操作记得点击ok,切记.
在keil5里面点开小锄头
点击C/C++,点开3个小数点.
按照指示,选择bsp文件.
led.c代码如下:
#include "led.h"
void LED_Disp(uchar LedDisp)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,LedDisp<<8,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
led.h代码如下:
#ifndef _LED_H_
#define _LED_H_
#include "main.h"
void LED_Disp(uchar LedDisp);
#endif
在cubumx里面代码要写在begin与end之间,切记.
在main.h里面,在begin与end中间加入LED流水灯代码.
#define uchar unsigned char
#define uint unsigned int
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
在main.c里面,在begin与end中间加入
#include "OLED.h"
#include "led.h"
在main函数里面,在begin与end中间加入初始化LED与LCD.在第一行显示Hellow. 如
LED_Disp(0x00);//led初始化
LCD_Init();//lcd初始化
LCD_Clear(Blue);
LCD_SetBackColor(Blue);
LCD_SetTextColor(White);
char ch[30];
sprintf(ch,"%s","Hellow");
LCD_DisplayStringLine(Line0,(uint8_t*)ch);//在第一行显示Hellow
在main函数里面引用led.c里面的函数led_disp();如:
while (1)
{
LED_Disp(0x00);//LED全关
HAL_Delay(500);
LED_Disp(0x01);//点亮第1个LED
HAL_Delay(500);
LED_Disp(0x02);//点亮第2个LED
HAL_Delay(500);
LED_Disp(0x04);//点亮第3个LED
HAL_Delay(500);
LED_Disp(0x08);//点亮第4个LED
HAL_Delay(500);
LED_Disp(0x10);//点亮第5个LED
HAL_Delay(500);
LED_Disp(0x20);//点亮第6个LED
HAL_Delay(500);
LED_Disp(0x40);//点亮第7个LED
HAL_Delay(500);
LED_Disp(0x80);//点亮第8个LED
HAL_Delay(500);
}
至此,LCD与LED的模块就完成了.