历史上的今天
今天是:2025年04月23日(星期三)
2018年04月23日 | STM32F429 Discovery FMC驱动原子4.3寸LCD
2018-04-23 来源:eefocus
上一篇写了GPIO简单的流水灯测试,看着有点单调,习惯了串口调试,板子上没有串口 那就另想办法吧,看着LCD突然有了个想法,为什么不把调试信息输出到LCD上,以前在做2416 WINCE开发的时候就经常这样干非常直观,那说干就干。
STM32F429I-DISO SDK里已经把开发包做好,那就直接拿过来用吧。
#define MESSAGE1 "STM32F429I-Discoverry" //提示信息
#define MESSAGE1_1 " GPIO TEST "
#define MESSAGE2 " LED3 LED4 "
#define MESSAGE2_1 " ^-^ "
#define MESSAGE5 " LED3 = %d" //LED3状态 1亮 0灭
#define MESSAGE6 " LED4 = %d" //LED4状态
#define LINENUM 0x15 //行数
#define FONTSIZE Font12x12 //字体大小
定义完了,那就该具体实现了,惯例先初始化 LCD初始化实现:
static void Display_Init(void)
{
/* Initialize the LCD */
LCD_Init();
LCD_LayerInit();
/* Eable the LTDC */
LTDC_Cmd(ENABLE);
/* Set LCD Background Layer */
LCD_SetLayer(LCD_BACKGROUND_LAYER);
/* Clear the Background Layer */
LCD_Clear(LCD_COLOR_WHITE);
/* Configure the transparency for background */
LCD_SetTransparency(0);
/* Set LCD Foreground Layer */
LCD_SetLayer(LCD_FOREGROUND_LAYER);
/* Configure the transparency for foreground */
LCD_SetTransparency(200);
/* Clear the Foreground Layer */
LCD_Clear(LCD_COLOR_WHITE);
/* Set the LCD Back Color and Text Color*/
LCD_SetBackColor(LCD_COLOR_BLUE);
LCD_SetTextColor(LCD_COLOR_WHITE);
/* Set the LCD Text size */
LCD_SetFont(&FONTSIZE);
/* Set the LCD Back Color and Text Color*/
LCD_SetBackColor(LCD_COLOR_BLUE);
LCD_SetTextColor(LCD_COLOR_WHITE);
LCD_DisplayStringLine(LINE(LINENUM), (uint8_t*)MESSAGE1);
LCD_DisplayStringLine(LINE(LINENUM + 1), (uint8_t*)MESSAGE1_1);
LCD_DisplayStringLine(LINE(0x17), (uint8_t*)" ");
/* Set the LCD Text size */
LCD_SetFont(&Font16x24);
LCD_DisplayStringLine(LCD_LINE_0, (uint8_t*)MESSAGE2);
LCD_DisplayStringLine(LCD_LINE_1, (uint8_t*)MESSAGE2_1);
/* Set the LCD Back Color and Text Color*/
LCD_SetBackColor(LCD_COLOR_WHITE);
LCD_SetTextColor(LCD_COLOR_BLUE);
}
初始化完成了,那就改实现显示函数了
static void Display(void)
{
uint8_t led3 = 0, led4 = 0;
uint8_t aTextBuffer[50];
led3 = GPIO_ReadOutputDataBit(LED3_GPIO_PORT,LED3_PIN); //读取LED3对应引脚值
sprintf((char*)aTextBuffer, MESSAGE5, led3);
LCD_DisplayStringLine(LCD_LINE_4, (uint8_t*)aTextBuffer); //把LED3状态更新到屏幕上
led4 = GPIO_ReadOutputDataBit(LED3_GPIO_PORT,LED4_PIN); //读取LED4对应引脚值
sprintf((char*)aTextBuffer, MESSAGE6, led4);
LCD_DisplayStringLine(LCD_LINE_6, (uint8_t*)aTextBuffer); //把LED4状态更新到屏幕上
}
这就是显示函数,读取LED对应的值,组成字符串,最后更新到LCD,LCD显示。
接下来就改主函数了:
int main(void)
{
int i;
Display_Init();
LEDInit();
SysTickInit();
while (1)
{
Delay(500);
GPIO_SetBits(LED4_GPIO_PORT,LED4_PIN);
GPIO_ResetBits(LED3_GPIO_PORT,LED3_PIN);
Display();
Delay(500);
GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);
GPIO_ResetBits(LED4_GPIO_PORT,LED4_PIN);
Display();
}
}
惯例,主要函数部分实现完了,那就看最终的显示结果吧.
史海拾趣
|
美国海归经历:国内和国外生活的真实比较 回国发展 在这个版面上看的时间挺长的,发现各位都是在美国呆久了,完全按照美国的思考方式来套中国,那自然是国内年薪和美国比太低了。 我在美国时也和各位想法差不多,那时候在美国一年下来税前也 ...… 查看全部问答> |
|
公司批发零售奶粉:澳美多 澳优 宝乐康 葆婴 贝因美 赐多利 多美滋 恩贝儿 飞鹤 华惠氏 慧聪 康维多 林贝儿 美可高特 美素 美赞臣 蒙牛 明治 亲亲宝贝 雀巢 三鹿 三元 森永 圣元 施恩 适宝康 完达山 味全 雅培 雅士利 伊利 优素 奶瓶 优幼 纸尿裤,好 ...… 查看全部问答> |
|
要求: a.本科或以上,电子相关专业;b.3年电子实际开发经验,有一定的硬件设计经验,了解EMC/EMI和相关测试;c.熟悉MCU应用和C语言, 了解Matlab等算法模型工具和操作系统优先;d.了解汽车电子系统,有其开发经验优先;e.工作认真负责,勇于承担责任, ...… 查看全部问答> |
|
为什么模拟地与数字地应有各自独立的回路?大家都是地,为什么还分彼此? Link水平很低,常常会问一些低级问题。 幸蒙Perter指点,明白了少许,现在和大家分享一下。 其实本质是对的,就是数字地,模拟地都是地,并不是他们俩头上长角,十分的怪 ...… 查看全部问答> |
|
笔者使用protel多年,积累了一些用其绘制电路图的使用经验和技巧,现将这些经验和技巧成文,希望对大家用protel绘制电路图有所帮助。 经验一: 因为protel是专业电路设计软件,可供电子类各专业设计人员和广大电子爱好者使用,所提供的 ...… 查看全部问答> |
|
我在用真是還進調試的時候,程序中打了斷點,可是斷點不其作用。後來用其他同事的電腦調試卻可以。應該是我vs還進的問題吧,請高人指點,如何解決這個問題。… 查看全部问答> |
|
这个月一直有个问题让我困扰着我. 在CE中是否可以真正意义上的实现相对于屏幕弹出的窗口或是图片淡入淡出(弹出时)?就是说.在mobile屏幕上(而不是你自己写的窗口或是其它你程序中的背景图片上),一个窗口淡入淡出.或是一个 ...… 查看全部问答> |
|
我用的是2003DDK +XP,写好程序后,用build命令编译时,没有生成.sys文件 出现了下面的编译信息: BUILD: Adding /Y to COPYCMD so xcopy ops won\'t hang. 高手看看问题出在了哪里? 急啊,解决就揭帖! … 查看全部问答> |




