久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2439|回復: 0
打印 上一主題 下一主題
收起左側

RT系統(tǒng)+STM32+紅外控制+1.44寸顯示屏 源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:743843 發(fā)表于 2021-11-28 15:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
​ 本次實驗是為了了解RT-thread的工作流程以及簡單的實驗RT來進行一個學習

實驗材料:STM32c8t6+1.44寸TFT顯示屏+紅外傳感器+分光棱鏡
實驗結果:可以進行紅外定時選擇,實驗成功分為三個線程做任務


線程一:開機時間顯示
  1. //APP1
  2. static void led1_thread_entry(void* parameter)
  3. {
  4.   rt_uint8_t hour=0,munite=0,second=0;
  5.         rt_uint8_t dispBuff[100];
  6.          //Show_Picture();
  7.         Demo_Menu();
  8.         while (1)
  9.         {
  10.          if(second<59) {
  11.                  second++;
  12.         //                         if(time == 10){
  13.         //                           OLED_Clear();
  14.         //                                 time = 0;
  15.         //                                 os_app_resume(APP_03);  //簡單定時10*500ms=5s后恢復運行APP_02 ,掛起自己。
  16.         //                           os_app_pend(APP_01);  
  17.         //                                }
  18.          }
  19.          else
  20.          {
  21.                  second=0;
  22.                  munite++;
  23.                  if(munite==60)
  24.                  {
  25.                          second=0;
  26.                          munite=0;
  27.                          hour++;
  28.                          if(hour==24)
  29.                          {
  30.                                  second=0;
  31.                                  munite=0;
  32.                                  hour=0;
  33.                          }
  34.                  }
  35.         }

  36.         sprintf(dispBuff,"-%02d:%02d:%02d-",hour,munite,second);        
  37.   Draw_Font24B(4,30,RED,dispBuff);        
  38. //        Draw_Font16B(4,40,YELLOW,dispBuff);//8*16 “ABC”
  39.         rt_thread_delay(1000);   /* 延時500個tick */        

  40.         }
  41. }
復制代碼


線程二:紅外遙控判斷
  1. //APP2
  2. static void APP2_thread_entry(void* parameter)
  3. {        
  4.   rt_err_t uwRet = RT_EOK;        
  5.         rt_uint8_t key=0;
  6.         rt_uint8_t dispBuff[100];
  7.         rt_uint8_t t=0;        
  8.         rt_uint8_t *str=0;
  9.         while(1)
  10.         {

  11.           key=Remote_Scan();
  12.                         
  13.                 if(key)
  14.                 {        
  15.                 switch(key)
  16.                         {
  17.                                 case 162:
  18.                                                 //1
  19.                                                 str= "*計時器 10 min*";
  20.                                                 munite = 10;
  21.                                                 hour=0;               
  22.                                                 second=0;
  23.             break;
  24.         
  25.         case 98:
  26.                                                 //2                                       
  27.                                           str= "*計時器 20 min*";
  28.             munite = 20;
  29.                                                 hour=0;        
  30.                                                 second=0;
  31.             break;
  32.         
  33.         case 226://3
  34.                                          str= "*計時器 30 min*";
  35.                                          munite = 30;
  36.                                         hour=0;        
  37.                                                 second=0;
  38.             break;
  39.         
  40.         case 34://4
  41.                                          str= "*計時器 40 min*";
  42.                                                 munite = 40;
  43.                                           hour=0;        
  44.                                     second=0;
  45.             break;
  46.         
  47.         case 2://5
  48.                                          str= "*計時器 50 min*";
  49.            munite = 50;
  50.                                          hour=0;
  51.                                          second=0;                        
  52.             break;
  53.         
  54.         case 194://6
  55.                                          str= "*計時器 60 min*";
  56.            munite = 60;
  57.                                         hour=0;
  58.                                         second=0;
  59.             break;
  60.         
  61.         case 224://7
  62.                                          str= "*計時器 90 min*";
  63.                                          hour = 1;
  64.            munite = 30;
  65.                                          second=0;
  66.             break;
  67.         
  68.         case 168://8
  69.                                          str= "*  計時器 2 h *";
  70.            hour = 1;
  71.                                         munite = 60;
  72.                                         second=0;
  73.             break;
  74.         
  75.         case 144://9
  76.                                          str= "*  計時器 3 h *";
  77.            hour = 2;
  78.                                                 munite = 60;
  79.                                                 second=0;
  80.             break;
  81.         
  82.         case 152:
  83.                                          str= "detected code 0";
  84.             
  85.             break;
  86.         
  87.         case 104:
  88.                                          str= "detected code *";
  89.          
  90.             break;
  91.         
  92.         case 176:
  93.                                          str= "detected code #";
  94.            
  95.             break;
  96.                
  97.         case 24:
  98.                                          str= "detected code ↑";
  99.          
  100.             break;
  101.                
  102.         case 16:
  103.                                          str= "detected code ←";
  104.             
  105.             break;
  106.         
  107.         case 74:
  108.                                           str= "detected code ↓";
  109.          
  110.             break;
  111.         
  112.         case 90:
  113.                                           str= "detected code →";
  114.             break;
  115.         
  116.         case 56:
  117.             str= "detected code OK ";
  118.             break;
  119.         
  120.         default:
  121.                                           str= "EMOURE";
  122.          
  123.             break;

  124.                         }

  125. //                        uwRet = rt_thread_resume(APP3_thread);/* 恢復APP3線程! */
  126. //                        if(RT_EOK == uwRet)
  127. //                        {
  128. //                                rt_kprintf("恢復APP3線程成功!\n");
  129. //                        }
  130. //                        else
  131. //                        {
  132. //                                rt_kprintf("恢復APP3線程失敗!失敗代碼:0x%lx\n",uwRet);
  133. //                        }
  134.                         Draw_Font16B(4,100,BRRED,str);        //顯示SYMBOL
  135.                 }

  136.         }

  137. }
復制代碼

線程三:計時器

  1. //APP3
  2. static void APP3_thread_entry(void* parameter)
  3. {
  4.         
  5.         rt_uint8_t dispBuff[100];
  6.   while (1)
  7.     {
  8.            if(second>0) {
  9.                          second--;
  10.                  }
  11.                  else
  12.                  {
  13.                          second=59;
  14.                          munite--;
  15.                          //time++;
  16.                          if(munite==0)
  17.                          {
  18.                                  munite=60;
  19.                            second=59;
  20.                                  
  21.                                  hour--;
  22.                                  if(hour==0)
  23.                                  {
  24.                                          munite=0;
  25.                              second=0;
  26. //                                         uwRet = rt_thread_suspend(APP3_thread);/* 掛起APP3線程 */
  27. //                                        if(RT_EOK == uwRet)
  28. //                                        {
  29. //                                                rt_kprintf("掛起APP3線程成功!\n");
  30. //                                        }
  31. //                                        else
  32. //                                        {
  33. //                                                rt_kprintf("掛起APP3線程失敗!失敗代碼:0x%lx\n",uwRet);
  34. //                                        }
  35.                                  }
  36.                                 
  37.                         
  38.                          }
  39.     }

  40.                 sprintf(dispBuff," time:%02d:%02d:%02d",hour,munite,second);               
  41.                 Draw_Font16B(4,80,YELLOW,dispBuff);//8*16 “ABC”
  42.           rt_thread_delay(980);   /* 延時500個tick */        

  43.     }
  44. }
復制代碼

代碼下載1:01.RT紅外定時器.zip-OS文檔類資源-CSDN下載
​代碼下載2: 代碼.7z (619.56 KB, 下載次數(shù): 16)

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 殴美黄色录像 | 自拍偷拍亚洲一区 | 国产精品中文在线 | 久久神马| 欧美亚洲日本 | 成人精品鲁一区一区二区 | 亚洲一区二区av | 91大片| 久久精品国内 | 国产精品毛片无码 | 正在播放国产精品 | 欧美视频中文字幕 | 国产精品高潮呻吟久久aⅴ码 | 久久久久亚洲精品中文字幕 | 国产乱码一区 | 国产精品国产三级国产a | 国产精品午夜电影 | 欧美在线观看一区 | 欧美一区二区三区四区在线 | 久久国产一区二区 | 成人久久久 | 久久五月婷 | 欧美亚洲成人网 | 成人性生交大免费 | 91免费视频 | 99re视频在线 | 国产ts人妖另类 | 福利精品 | 精品日本久久久久久久久久 | 一级黄色短片 | 久久国产精品99久久久久久丝袜 | 久久亚洲春色中文字幕久久久 | 偷拍自拍第一页 | 99久久精品免费看国产小宝寻花 | 欧美一区二区三区一在线观看 | 中文字幕第三页 | 亚洲欧美一区二区三区国产精品 | 欧洲亚洲精品久久久久 | 天天夜夜人人 | 欧美日韩国产高清视频 | 免费视频一区二区 |