历史上的今天
返回首页

历史上的今天

今天是:2025年06月03日(星期二)

正在发生

2018年06月03日 | STM32F429I-DISO探索第一篇 --GPIO(2)

2018-06-03 来源:eefocus

上一篇写了GPIO简单的流水灯测试,看着有点单调,习惯了串口调试,板子上没有串口 那就另想办法吧,看着LCD突然有了个想法,为什么不把调试信息输出到LCD上,以前在做2416 WINCE开发的时候就经常这样干非常直观,那说干就干。

STM32F429I-DISO SDK里已经把开发包做好,那就直接拿过来用吧。


  1. #define MESSAGE1   "STM32F429I-Discoverry"   //提示信息  

  2. #define MESSAGE1_1 "    GPIO TEST        "     

  3. #define MESSAGE2   " LED3     LED4  "  

  4. #define MESSAGE2_1 "      ^-^       "  

  5. #define MESSAGE5   "   LED3 = %d"      //LED3状态  1亮 0灭  

  6. #define MESSAGE6   "   LED4 = %d"      //LED4状态  

  7. #define LINENUM            0x15        //行数  

  8. #define FONTSIZE         Font12x12     //字体大小  


定义完了,那就该具体实现了,惯例先初始化 LCD初始化实现:


  1. static void Display_Init(void)  

  2. {  

  3.   /* Initialize the LCD */  

  4.   LCD_Init();  

  5.   LCD_LayerInit();  

  6.   /* Eable the LTDC */  

  7.   LTDC_Cmd(ENABLE);  

  8.     

  9.   /* Set LCD Background Layer  */  

  10.   LCD_SetLayer(LCD_BACKGROUND_LAYER);  

  11.     

  12.   /* Clear the Background Layer */   

  13.   LCD_Clear(LCD_COLOR_WHITE);  

  14.     

  15.   /* Configure the transparency for background */  

  16.   LCD_SetTransparency(0);  

  17.     

  18.   /* Set LCD Foreground Layer  */  

  19.   LCD_SetLayer(LCD_FOREGROUND_LAYER);  

  20.   

  21.   /* Configure the transparency for foreground */  

  22.   LCD_SetTransparency(200);  

  23.     

  24.   /* Clear the Foreground Layer */   

  25.   LCD_Clear(LCD_COLOR_WHITE);  

  26.     

  27.   /* Set the LCD Back Color and Text Color*/  

  28.   LCD_SetBackColor(LCD_COLOR_BLUE);  

  29.   LCD_SetTextColor(LCD_COLOR_WHITE);  

  30.     

  31.     /* Set the LCD Text size */  

  32.   LCD_SetFont(&FONTSIZE);  

  33.     

  34.   /* Set the LCD Back Color and Text Color*/  

  35.   LCD_SetBackColor(LCD_COLOR_BLUE);  

  36.   LCD_SetTextColor(LCD_COLOR_WHITE);  

  37.     

  38.   LCD_DisplayStringLine(LINE(LINENUM), (uint8_t*)MESSAGE1);  

  39.   LCD_DisplayStringLine(LINE(LINENUM + 1), (uint8_t*)MESSAGE1_1);  

  40.   LCD_DisplayStringLine(LINE(0x17), (uint8_t*)"                               ");  

  41.     

  42.   /* Set the LCD Text size */  

  43.   LCD_SetFont(&Font16x24);  

  44.     

  45.   LCD_DisplayStringLine(LCD_LINE_0, (uint8_t*)MESSAGE2);  

  46.   LCD_DisplayStringLine(LCD_LINE_1, (uint8_t*)MESSAGE2_1);  

  47.     

  48.   /* Set the LCD Back Color and Text Color*/  

  49.   LCD_SetBackColor(LCD_COLOR_WHITE);  

  50.   LCD_SetTextColor(LCD_COLOR_BLUE);   

  51. }  


初始化完成了,那就改实现显示函数了


  1. static void Display(void)  

  2. {  

  3.   uint8_t  led3 = 0, led4 = 0;  

  4.   uint8_t aTextBuffer[50];  

  5.     

  6.   led3 = GPIO_ReadOutputDataBit(LED3_GPIO_PORT,LED3_PIN);     //读取LED3对应引脚值  

  7.   

  8.   sprintf((char*)aTextBuffer, MESSAGE5, led3);  

  9.   LCD_DisplayStringLine(LCD_LINE_4, (uint8_t*)aTextBuffer);    //把LED3状态更新到屏幕上  

  10.       

  11.   led4 = GPIO_ReadOutputDataBit(LED3_GPIO_PORT,LED4_PIN);      //读取LED4对应引脚值      

  12.   sprintf((char*)aTextBuffer, MESSAGE6, led4);    

  13.    LCD_DisplayStringLine(LCD_LINE_6, (uint8_t*)aTextBuffer);    //把LED4状态更新到屏幕上  

  14. }  


这就是显示函数,读取LED对应的值,组成字符串,最后更新到LCD,LCD显示。

接下来就改主函数了:


  1. int main(void)  

  2. {  

  3.   int i;  

  4.       

  5.     Display_Init();  

  6.   LEDInit();  

  7.     SysTickInit();  

  8.   while (1)  

  9.   {  

  10.         Delay(500);  

  11.         GPIO_SetBits(LED4_GPIO_PORT,LED4_PIN);  

  12.         GPIO_ResetBits(LED3_GPIO_PORT,LED3_PIN);  

  13.         Display();  

  14.         Delay(500);  

  15.         GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);  

  16.         GPIO_ResetBits(LED4_GPIO_PORT,LED4_PIN);  

  17.         Display();  

  18.   }  

  19. }  


惯例,主要函数部分实现完了,那就看最终的显示结果吧.

 


推荐阅读

史海拾趣

E. Dold & Söhne KG公司的发展小趣事

在E. Dold & Söhne KG公司的发展历程中,品质始终是公司最重视的方面之一。公司严格把控原材料采购、生产过程和产品检验等环节,确保每一件产品都符合高标准的质量要求。这种对品质的执着追求使得E. Dold & Söhne KG公司的产品在市场上赢得了广泛的认可和信任。

Ceratech Corporation公司的发展小趣事

在电子行业中,压敏技术是一项重要的技术。Ceratech Corporation公司针对这一领域进行了深入研究和探索。公司研发团队经过多次试验和改进,成功研发出具有自主知识产权的压敏产品。这些产品不仅具有高灵敏度和高稳定性,而且能够适应各种复杂环境。通过压敏技术的研发与应用,Ceratech Corporation进一步提升了其在电子行业的技术实力和市场竞争力。

DBM Optix公司的发展小趣事

在发展过程中,DBM Optix也面临过不少挑战和危机。例如,某次全球供应链紧张导致公司原材料供应受到影响,生产进度一度受阻。面对这一挑战,DBM Optix迅速调整采购策略,积极寻找新的供应商,并加强与现有供应商的合作。同时,公司还加强了内部管理,优化生产流程,提高生产效率。这些努力使得DBM Optix成功度过了危机,并继续保持良好的发展势头。

Econais公司的发展小趣事

随着技术的不断成熟和市场的日益扩大,Econais开始将目光投向全球市场。公司积极参加各类国际展会和研讨会,与全球各地的客户和合作伙伴建立联系。同时,Econais还针对不同地区的市场需求,推出定制化的产品和解决方案。这些努力使得Econais在全球范围内的市场份额逐渐扩大。

EETools公司的发展小趣事

EETools公司成立于1992年,当时正值微处理器开发工具行业蓬勃发展的时期。公司创始人凭借对嵌入式系统产品的深刻理解和市场需求的敏锐洞察,决定投身于这一领域。EETools在硅谷的电子和计算机行业中心设立总部,迅速成为该地区的一颗新星。

在初创阶段,EETools专注于嵌入式系统产品的咨询和分销业务。通过与多家知名半导体厂商建立合作关系,EETools成功将各种高性能的嵌入式系统产品引入市场,满足了客户多样化的需求。同时,公司还积极研发自主品牌的嵌入式开发工具,为客户提供更为全面和专业的服务。

Bud Industries公司的发展小趣事

EETools始终坚持以客户为中心的服务理念。公司深入了解不同行业客户的需求和痛点,为他们提供定制化的嵌入式系统解决方案。无论是医疗设备、汽车电子还是工业自动化等领域,EETools都能为客户提供高效、可靠的嵌入式开发工具和服务。这种以客户需求为导向的服务模式不仅赢得了客户的信任和好评,还为公司赢得了更多的商业机会。

问答坊 | AI 解惑

arm gps导航系统方案

2007年2月,中国的导航卫星“北斗”在四川成功升空,这是我国发射的第四颗导航卫星,组成了中国自己的导航卫星系统,这一系统计划在2008年完成建设。目前,全球已经建立了美国的GPS全球导航系统、欧洲的“伽利略”系统和俄罗斯的“格洛纳斯”系统。 ...…

查看全部问答>

谁有sqlce 3.5的C++类封装包啊

要在wince6里访问数据库,oledb太复杂了可有十月封装好的类能调用啊邮箱happy5217744@yahoo.com.cn…

查看全部问答>

使用NdisAllocateMemory()时返回虚拟地址的问题

使用NdisAllocateMemory()返回的虚拟地址怎么是在0xD000 0000-0xE000 0000这个范围里啊? 在g_oalAddressTable和config.bib里并没有定义这个地址空间啊.…

查看全部问答>

用keil c 编译程序的时候,分别选择small模式和compact模式,出现不同的结果。

同样的代码,用small模式是一种结果,用compact模式是另外一种结果,请高手给指点下,这是怎么回事?…

查看全部问答>

ARM7移植uCos操作系统遇到的一个问题

OSIntCtxSw                                                    ...…

查看全部问答>

STM32F103C板上编程方法

请教各位 STM32F103C有没有除JTAG以外的使用更少引线的板上编程方法? 当然,除了先用软件写个BOOT程序实现应用编程的那种。 我想在板上留一个那样的接口方便程序升级,留JTAG引线太多不是很方便。 谢谢!…

查看全部问答>

TI LED--2012最新设计适合采用LED照明的众多应用

replyreload += \',\' + 1406061;TI LED参考设计指南_适合采用LED照明的众多应用 Timson,如果您要查看本帖隐藏内容请回复 [ 本帖最后由 qwqwqw2088 于 2012-11-5 23:45 编辑 ]…

查看全部问答>

电力载波LED灯具调光终端+第一周

本周不凑巧啊,正赶上仲秋佳节,时间安排就会出现冲突,不过还是认真在做RL78资料的学习和设计的工作。大家努力,也要先过好佳节啊!…

查看全部问答>