搜索

[嵌入式linux] RTOS】+ RT-Thread应用创新设计大赛 + 智能感应加热饮水机--2

[复制链接]
145|0
 楼主 | 2020-7-6 04:47 | 显示全部楼层 |阅读模式
本帖最后由 szkeinew 于 2020-7-7 23:53 编辑

一,上接上篇概括。【RTOS】+ RT-Thread应用创新设计大赛 + 智能感应加热饮水机--1
二,说明。
     因为之前一直在研究PWM设备的注册,结果是浪费了时间又无收获。另外硬件搭配上双起不了作用。所以超时发表文章,只能用软件模拟的方式实现软件流程。
三,用到的功能。
      1,RT-Thread内核用到如下功能:1,线程的创建,删除。2,信号量。
      2,用Env工具创建如下设备:1,PIN设备。2,UART设备。
      3,开发板是使用MM32L373PS,官网编号为:MB-024。
四,MM32L3xx基于BSP的移植RT-Thread V4.0.2。
     1,在RT-Thread官网下载RT-Thread V4.0.2。将RT-Thread V4.0.2文件夹下的rt_thread文件夹除BSP文件夹外所有的文件复制到一个新的项目文件夹中,并将rt-thread文件夹更改为项目名。如我项目为“head_water”。
      962515f033101d93f6.png
    2,在head_water文件下新建一个bsp文件夹。见上图,并将RT-Thread V4.0.2文件夹下的bsp文件夹中的mm32l3xx文件夹下所有的文件都复制到新建的bsp这个文件夹中。至此 这个基于BSP的移植RT-Thread V4.0.2现移植完成。
    637605f0333a3d7fef.png
    3,查看mm32l3xx文件夹中的drivers下已添加有了PIN及UART设备。

    754945f0337d648813.png
五,ENV工具使用。

     1,在RT-Thread官网下给出下载ENV网址。RT-Thread env 工具下载
     2,下载完成后,并安装。安装完成后,打开ENV的根目录,现在打开ENV.exe并将ENV绑定在鼠标右键。ENV的根目录有介绍,但为了加快大家的了解,在此重复一遍。
     3,在打开的ENV的CMD窗口顶部标题档的白色地方,按鼠标右键选择setings,在弹出新的窗口下在左边选项档中选择Integration,然后点击右边中间位的Register按钮,最后点击右下角的Save settings.
    51715f03422dabe02.png 51485f03427513b13.png 881945f0342c851f55.png
   4,使用ENV工具添加UART2.打开项目文件夹中BSP文件夹的mm32l3xx文件夹,在空白地方按鼠标右键,选择ConEmu Here,如上图所示。
   5,此时弹出一个CMD窗口,并且显示了RT_Thread一些信息。
       462235f03f730e0506.png
   6,输入命令“menuconfig”按回车键,弹出menuconfig 图形化配置界面.
    744425f03f7f915a26.png
   7,依次按以下顺序打开配置UART2选项并选上。所要选择项按下回车键。上下箭头键为上下项选择,Esc键退到上一项,选择确认为空格键。

      175315f03f87302ae2.png 980075f03f8971e76a.png 888155f03f9321fe44.png 122025f03f974bf5d5.png 最后选择效果如下: 912675f03f994172b9.png
   8,一直按Esc键完全退出menuconfig 图形化配置界面为止。此时弹出对话框,选择"Yes"退出到CMD窗口.
    485975f03facbab4e6.png
9,在CMD窗口下会看到一些指引信息。
703835f03fb492c469.png




六,2.4“电阻触摸串口屏运行界面。
     1,串口屏设计界,由二页组成,首页是介绍举办比赛的单位,停留时间为5S后转入次页,是整个项目的操作界面。
     2,串口屏空白排版。
          46675f0241f12cc1d.png 811445f02420f164b8.png
     3,串口屏可变参数都是由开发板发送过去,运行界面如下。
         501335f0242b51a3d1.png 232465f0242d5b785d.png
    4,开发板与串口屏是通过开发板的uart2来通信。上电初始化后,将按串口屏的页面所需内容发送。代码如下:
      
  1. #include "usart_hmi.h"


  2. const char titlet0[] = "titlet0.txt=\"RT_Thread应用创新设计大赛\"";
  3. const char titlet1[] = "titlet1.txt=\"RT_Thread\"";
  4. const char titlet2[] = "titlet2.txt=\"21ic中国电子网\"";
  5. const char titlet3[] = "titlet3.txt=\"灵动微电子\"";
  6. const char titlet4[] = "titlet4.txt=\"UCLOUD优刻得...等\"";

  7. const char proj_mane[] = "t0.txt=\"智能饮水机(参赛项目)\"";
  8. const char proj_temperature_title_text[] = "t1.txt=\"温度选择:\"";
  9. const char proj_temperature1_text[] = "t2.txt=\"65℃\"";
  10. const char proj_temperature2_text[] = "t3.txt=\"85℃\"";
  11. const char proj_temperature3_text[] = "t4.txt=\"100℃\"";

  12. const char proj_capacity_title_text[] = "t6.txt=\"容量选择:\"";
  13. const char proj_capacity1_text[] = "t7.txt=\"250mL\"";
  14. const char proj_capacity2_text[] = "t8.txt=\"500mL\"";
  15. const char proj_capacity3_text[] = "t9.txt=\"750mL\"";

  16. const char operator_error_text[] = "t5.txt=\"请按取消键\"";

  17. const char dim_brightness_value[] = "dim=85";//设置串口屏亮度
  18. const char page1_open[] = "page page1";

  19. const char end[]  = {0xff,0xff,0xff};


  20. void usart_hmi_write(rt_device_t device,const char *paramter,rt_uint8_t size_length){
  21.           rt_device_write(device,0,paramter,size_length);
  22.                 rt_thread_mdelay(5);        
  23.                 rt_device_write(device,0,&end,sizeof(end));
  24.           rt_thread_mdelay(5);        
  25. }


  26. void usart_hmi_init(rt_device_t device){

  27.                 rt_thread_mdelay(1000);
  28.     //页面1显示内容,为举办单位的列表        
  29.                 usart_hmi_write(device,titlet0,sizeof(titlet0)-1);
  30.                 usart_hmi_write(device,titlet1,sizeof(titlet1)-1);
  31.                 usart_hmi_write(device,titlet2,sizeof(titlet2)-1);
  32.     usart_hmi_write(device,titlet3,sizeof(titlet3)-1);
  33.           usart_hmi_write(device,titlet4,sizeof(titlet4)-1);
  34.         
  35.           //串口屏亮度
  36.           usart_hmi_write(device,dim_brightness_value,sizeof(dim_brightness_value)-1);
  37.                
  38.                 //延时5S,进入page1
  39.                 rt_thread_mdelay(5000);
  40.                 usart_hmi_write(device,page1_open,sizeof(page1_open)-1);
  41.                
  42.                 //页面2显示内容,为参赛项目
  43.           usart_hmi_write(device,proj_mane,sizeof(proj_mane)-1);
  44.                
  45.                 //页面2显示内容,为参赛项目下的列表1
  46.           usart_hmi_write(device,proj_temperature_title_text,sizeof(proj_temperature_title_text)-1);
  47.                
  48.                 //页面2显示内容,为参赛项目下的列表1的值
  49.           usart_hmi_write(device,proj_temperature1_text,sizeof(proj_temperature1_text)-1);
  50.     usart_hmi_write(device,proj_temperature2_text,sizeof(proj_temperature2_text)-1);
  51.           usart_hmi_write(device,proj_temperature3_text,sizeof(proj_temperature3_text)-1);
  52.         
  53.           //页面2显示内容,为参赛项目下的列表2
  54.           usart_hmi_write(device,proj_capacity_title_text,sizeof(proj_capacity_title_text)-1);
  55.                
  56.                 //页面2显示内容,为参赛项目下的列表1的值
  57.           usart_hmi_write(device,proj_capacity1_text,sizeof(proj_capacity1_text)-1);
  58.     usart_hmi_write(device,proj_capacity2_text,sizeof(proj_capacity2_text)-1);
  59.           usart_hmi_write(device,proj_capacity3_text,sizeof(proj_capacity3_text)-1);
  60.          
  61.           //页面2显示内容,为异常值
  62.           usart_hmi_write(device,operator_error_text,sizeof(operator_error_text)-1);        
  63. }

复制代码

七,附件。
      RT-Thread应用创新设计大赛作品模板.rar (2.98 MB, 下载次数: 5)
587685f03fa55a9dfc.png
445025f03fb36b95b8.png

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

在线客服 快速回复 返回顶部 返回列表