原创 UFUN开发板实验笔记(4)

2019-8-27 23:16 3522 22 3 分类: MCU/ 嵌入式 文集: 开发板笔记
      王国维在《人间词话》里对成事的经过概括了必要经过的三种之境界:"昨夜西风凋碧树。独上高楼,望尽天涯路。"此第一境也。"衣带渐宽终不悔,为伊消得人憔悴。"此第二境也。"众里寻他千百度,蓦然回首,那人却在灯火阑珊处。"此第三境也。这些天的经历验证了在学习STM32这件事上,还折腾在第一境和第二境的来回反复纠结上,想想曾经经历过51的机器语言、汇编语言、C51的编程实战,过渡到STM32应该易如反掌,实践打碎了这个美丽梦想。前面用到串口中断经历一番苦痛的折磨,决定先来两个简单的,想着后面可以走顺点了,不曾想照旧是一番痛苦的纠结。有了OLED这个显示屏点亮的底子,把传感器的数据显示出来,这不是很简单的步骤吗?轻敌了,显示三轴加速度数值的程序搞了一天还没搞定,只得把后面的先提上来了。响应触摸按键,就这么简单,居然也颇费周折,几次感觉又该先放弃了,最终还是在不舍中有了一点突破,先上图。

      这一程序要达到的效果是:当触摸板上一个触摸按键时,OLED显示几号键被按下了。这么简单,纠结在那里呢?UFUN提供的例程有Keil4和Keil5的,之前装的是Keil4版本,打不开Keil5创建的例程。那也也没关系啊,把需要的文件和段落复制过来合成就好了。开始就这么想的,这可闹麻烦,本身对一串串英文出错信息感冒,才一直没把Keil用熟练。想着各个该复制的函数、库文件都复制到位了。编译一下吧,各种出错、各种没响应,直到把脑壳弄疼。最后索性狠狠心,下载安装了Keil,反过来把做过的Keil4的资源复制到Keil5例程模板里。还是一路的不顺。首先遇到的的一个问题是明明编已完成,没错了,偏偏下载时来了一招:“程序文件不是0x8000000和0x20000000区域的”

      多次扰人后才想到去百度下,终于找到了有效的解决办法:进入Options For Target,注意Read/Only Memory Areas里面的IROM1的Start地址是否为0x8000000。不知Keil5工程为什么没设好这个起始地址,设好了就解决了。

      程序通过复制拷贝其实很简单就能实现了,在触摸按键例程的基础上把OLED屏相关函数复制过来,展示一下主程序:

  1. int main(void)
  2. {
  3. int key_value; //键值
  4. DelayInit();
  5. I2C_Configuration();
  6. OLED_Init();
  7. LED_Init(); //led初始化
  8. TIM2_PWM_Init(399,0); //pwm初始化
  9. TK_GPIO_Init(); //触摸按键初始化
  10. OLED_CLS();//清屏
  11. OLED_ShowStr(0,0,"Please TouchKEY",2);
  12. while(1)
  13. {
  14. key_value=Key_Scan(1); //获取键值
  15. if(key_value==1) { //检测到touch0被按下
  16. OLED_ShowStr(4,4,"Key 1 pressed",2); }
  17. if(key_value==2) { //检测到touch1被按下
  18. OLED_ShowStr(4,4,"Key 2 pressed",2); }
  19. if(key_value==3){ //检测到touch2被按下
  20. OLED_ShowStr(4,4,"Key 3 pressed",2); }
  21. if(key_value==4){ //检测到touch3被按下
  22. OLED_ShowStr(4,4,"Key 4 pressed",2); }
  23. }
  24. }

      在程序调试中两个问题老是报错:一个是两个工程中delay.c文件是不一样的,差一个DelayInit(),延时函数的名称也不一样,名字差一个下划线。这个还好解决。另一个讨厌了,半天找不出原因来:Error: L6200E: Symbol SystemCoreClock multiply defined (by system_stm32l1xx_1.o and system_stm32l1xx.o).平白无故多出了system_stm32l1xx_1.c文件,三个函数多重定义错误,工程文件夹里翻遍了也找不出来。最后,还是百度找出了应对之策:Project—Manage—Project Items,去除system_stm32l1xx.c文件,问题解决。


      终于算大功告成了,展示一下运行效果,另外原先没加清屏指令,满屏出现了星空效果,而不影响字符显示,收获了一个意外,没拍下来,以后或许能用上。

       最后还是漏了一条,前面这个ISP下载的跳线帽实在太小了,还容易插到第2列造成USB电源短路,有点危险。终于忍受不了,把两个引脚连出来加了一个自锁按压开关,下载调试方便了很多呐。


附件:OLED响应触摸按键源程序    https://mbb.eet-china.com/download/20410.html

作者: lyyinhe_xi, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-218568.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

curton 2019-8-28 22:14

学习了
相关推荐阅读
lyyinhe_xi 2024-08-25 18:19
【机智云Gokit2.0开发板】DEMO体验及开发流程
Gokit2.0针对硬件开发者的智能硬件开发板GoKit,用于帮助开发者快速实现智能硬件的原型开发。GoKit支持开发者将产品接入目前行业中各大流行的模组方案,帮助他们与高通、庆科、博通、 汉枫等对接...
lyyinhe_xi 2024-08-07 23:09
《运放电路环路稳定性设计》运放电路原理到评测
      非常有幸得到了这样一本专业电子模拟电路方面的书籍,这本书以全面而系统的方式,向读者展示了运放环路稳定性设计的核心原理和实际操作步骤。书的封面很有意思,插图和电...
lyyinhe_xi 2024-04-30 11:08
【拆解】赛事无人机电池集中充电器
      无人机赛事,电池电量充足是取得良好成绩的关键要素。今天拆解一款支持六块电池同时集中充电的无人机电池充电器。板上有六个电池充电插口,分别有指示灯和拨动开关。三位...
lyyinhe_xi 2022-12-30 18:09
【灵动微电子 L0136 温控器/遥控器应用】+温湿度检测试验
      本次试用的是灵动微电子 EVB-L0136 开发板:      板载 MM32L0136C7P MCU,Arm Cortex-M...
lyyinhe_xi 2022-07-28 18:09
【CH32V307评估板】+Rt_thread Srduio 体验
       非常幸运获得CH32V307开发板试用机会,感谢面包板论坛!恒推出的CH32V307是基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区...
lyyinhe_xi 2022-07-03 22:42
《Verilog HDL与FPGA数字系统设计》美丽邂逅
      伏羲一画开天。阴阳动静迭为升降,天地定位,日月运行,万物之生生不息。阴阳符号演绎四象八卦,人文肇始之。阴阳符号逻辑思维造就了计算机最核心的二进制思想基石。&n...
我要评论
1
22
关闭 站长推荐上一条 /2 下一条