STM32G431RBT6之LCD与LED配置

server/2024/10/21 3:36:16/

首先,配置时钟树,时钟树的配置在我的另外一篇博客里,这里不再赘述.

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个LEDHAL_Delay(500);LED_Disp(0x02);//点亮第2个LEDHAL_Delay(500);LED_Disp(0x04);//点亮第3个LEDHAL_Delay(500);LED_Disp(0x08);//点亮第4个LEDHAL_Delay(500);LED_Disp(0x10);//点亮第5个LEDHAL_Delay(500);LED_Disp(0x20);//点亮第6个LEDHAL_Delay(500);LED_Disp(0x40);//点亮第7个LEDHAL_Delay(500);LED_Disp(0x80);//点亮第8个LEDHAL_Delay(500);
}

 至此,LCD与LED的模块就完成了.


http://www.ppmy.cn/server/7703.html

相关文章

otomegame游戏音频提取通用教程

otomegame游戏音频提取通用教程 文章目录 otomegame游戏音频提取通用教程一、otomegame游戏介绍二、游戏拆包与语料提取目标TTS语料积累最终目标&#xff1a; 三、游戏拆包简要介绍1&#xff0c;游戏资源提取关键词2&#xff0c;游戏拆包工具&#xff08;1&#xff09;游戏资源…

前端入门:HTML(CSS边框综合案例)

案例&#xff1a; 源代码&#xff1a; css-borders.html: <body> <div id"square"> </div> <br> <div id"triangle"> </div> <br> <div id"trapezium"> </div> <br> <div id…

Python自动化系列---Python基础

1. 什么是自动化测试 1&#xff09;代码&#xff1a;Python&#xff0c;Java 2&#xff09;工具&#xff1a;Jmeter&#xff0c;Robotframework—RF 3&#xff09;为什么写代码/做自动化&#xff1a;回归测试执行的&#xff08;自动化框架脚本&#xff09;–稳定老功能 2. Py…

DRF: 序列化器、View、APIView、GenericAPIView、Mixin、ViewSet、ModelViewSet的源码解析

前言&#xff1a;还没有整理&#xff0c;后续有时间再整理&#xff0c;目前只是个人思路&#xff0c;文章较乱。 注意路径匹配的“/” 我们的url里面加了“/”&#xff0c;但是用apifox等非浏览器的工具发起请求时没有加“/”&#xff0c;而且还不是get请求&#xff0c;那么这…

MultiHeadAttention在Tensorflow中的实现原理

前言 通过这篇文章&#xff0c;你可以学习到Tensorflow实现MultiHeadAttention的底层原理。 一、MultiHeadAttention的本质内涵 1.Self_Atention机制 MultiHeadAttention是Self_Atention的多头堆嵌&#xff0c;有必要对Self_Atention机制进行一次深入浅出的理解&#xff0c;这…

安卓手机APP开发__媒体开发部分__网络栈

安卓手机APP开发__媒体开发部分__网络栈 目录 概述 配置ExoPlayer来使用一个特定的网络栈 支持的网络栈 Cronet OkHttp 安卓内嵌的网络栈 其它的网络栈

分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测

分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测 目录 分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Mat…

在使用 sqlite 时遇到的奇怪问题的正解

在使用 sqlite 时遇到的奇怪问题&#xff0c; 用 DB Browser for SQLite &#xff08;一款 sqlite 可视化工具&#xff09;操作 sqlite 数据库 &#xff0c;一个名叫 testDB 的数据库&#xff08;位置在C:\sqlite\testDB.db&#xff09;&#xff0c;在里面建了一个表&#xff0…