色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于RT-Thread操作系統軟件框架設計思路

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-07-07 10:09 ? 次閱讀

項目中使用到rt—thread就會涉及到對操作系統的一個軟件框架的搭建過程思路,這里拿已經完成城的項目做一些分享,希望對讀者有些啟發。

項目要求:讀取溫濕度,串口打印,數據定時發送,lcd顯示,平臺上傳,按鍵設置,SD 卡存儲等

系統涉及到的硬件由以下幾部分組成:

1.交互輸入部分:按鍵

2. 輸出部分:TFTLCD屏幕顯示,SD卡存儲,led燈報警

3. 傳感器采集:DHT11溫濕度采集

4. 通訊部分:串口,wifi模塊

5. 計時部分:RTC時鐘計時

在這里插入圖片描述硬件連接示意圖

根據硬件的連接與系統要求實現的功能來看:

1.首先要做的就是根據硬件電路寫好底層驅動(HAL)

2.進行函數的劃分與封裝,將應用層需要的函數封裝好

3.進行中斷函數的撰寫與封裝(可以將該這一步與第2步同時進行)

4.由于中斷的優先級比任何的線程優先級都要高因此需要統籌線程與中斷的關系

5.繼續線程的規劃,線程優先級定義及應用層函數的撰寫

軟件程序結構:

在這里插入圖片描述

項目系統要求定期發送數據到平臺,其中在定時器超函數中周期性采集溫濕度信息,并發送消息隊列到處理緩存傳感器信息的線程和超溫處理線程,同時發布采集到一次傳感器的事件。

超溫處理線程接收消息判斷是否超過溫度,wifi模塊通過串口2將溫濕度信息發送給wifi模塊,由wifi模塊實時上傳到服務器。同時串口溫度上傳任務同時接收定時器發送的事件和PC機通過串口1發送的獲取溫度標志所觸發的事件。當采集到傳感器信息且上位機要求獲取溫濕度信息的事情同時發生時,通過串口1向PC發送溫濕度信息。由于SD卡存儲緩慢,所以由溫濕度信息緩存線程在內存池中申請內存,并將獲取到的溫濕度信息緩存到內存中,同時更新LCD曲線繪制的歷史溫濕度信息緩存。

LCD處理線程處理IO口中斷發送過來的標志信息,并據此顯示相應的菜單,溫度濕度信息,顯示所設定采樣頻率與閾值的情況等。

SD卡存儲任務作為后臺任務,從緩存存儲溫濕度信息的內存中讀取溫濕度信息,并通過FATFS文件系統將相應的溫濕度信息存入SD卡,同時根據每片內存的頭部時間信息以及定時器采樣頻率推算本片內存中其他數據的時間信息,并將采樣時間一起保存到SD卡中。在存儲完一片內存片后,釋放該內存到內存池之中。流程圖如下所示:

在這里插入圖片描述

代碼部分這里貼出主函數中的基本邏輯框架:

int main(void)
{	
    
  /***********************掛載SD卡并打開文件*******************************/
	while(SD_Init())//檢測不到SD卡
	{
		LCD_ShowString(30,150,200,16,16,"SD Card Error!");				
		LCD_ShowString(50,150,200,16,16,"Please Check! ");
	}
  
  //*****************消息隊列創建	*****************************************/
  //申請內存池
	//初始化控制塊
    rt_mp_init(&tem_mp, "temmp", &temmempool[0], sizeof(temmempool), mem_slice);
	  rt_mp_init(&hum_mp, "hummp", &hummempool[0], sizeof(hummempool), mem_slice);
	    rt_err_t result2;
    /* 初始化消息隊列 */
    result= rt_mq_init(& mq_DHT11_tem,
                        " mq_DHT11_tem",
                        &msg_DHT11_pool_tem[0],               /* msg_pool */
                        sizeof(tem),                          /* 每個消息的大小*/
                        sizeof(msg_DHT11_pool_tem),                     /* msg_pool大小*/
                        RT_IPC_FLAG_FIFO); 
    result2 = rt_mq_init(& mq_DHT11_hum,
                        " mq_DHT11_hum",
                        &msg_DHT11_pool_hum[0],               /* msg_pool */
                        sizeof(hum),                          /* 每個消息的大小*/
                        sizeof(msg_DHT11_pool_hum),                     /* msg_pool大小*/
                        RT_IPC_FLAG_FIFO); 
   
	//定時器線程
    /* DHT11 TIMER */		
    DH11_timer = rt_timer_create("DHT11_get", timeout1,
                             RT_NULL, samp_freq,
                             RT_TIMER_FLAG_PERIODIC);
    /* 啟動*/
    if (DH11_timer  != RT_NULL) 
			  flag=rt_timer_start(DH11_timer );	
	  if(flag==RT_EOK)
			 rt_kprintf("DH11_timer start successfull\n");	

	//***********************事件處理線程*******************************************/
		uart_deal_event =                          /* 線程控制塊指針 */
    rt_thread_create( "usart_deal_event",              /* 線程名字 */
                      uart_deal_thread_entry,   /* 線程入口函數 */
                      RT_NULL,             /* 線程入口函數參數 */
                      256,                 /* 線程棧大小 */
                      2,                   /* 線程的優先級 */
                      20);                 /* 線程時間片 */
                   
    /* 啟動線程,開啟調度 */
    if (uart_deal_event != RT_NULL)
        rt_thread_startup(uart_deal_event);
    else
         rt_kprintf("led_thread_creat_error");
		
////*******************創建內存任務線程***********************************************************//
   for (j = 0; j < 48; j++) ptr[j] = RT_NULL;

    //創建線程
    recevDHT11 = rt_thread_create("recevDHT11", recevDHT11_entry, RT_NULL,
                            512,
                            4 ,20);
		
    if (recevDHT11 != RT_NULL)
         rt_thread_startup(recevDHT11);

//*******************創建釋放內存堆寫入SD卡線程***********************************************************//	
    thread_mp_release = rt_thread_create("thread_mp_release", thread_mp_release_entry, RT_NULL,
                            1024,
                            4, 20);
    if (thread_mp_release != RT_NULL)
        rt_thread_startup(thread_mp_release);
		
///*******************創LCD 顯示繪圖線程***********************************************************//	
		lcd_show= rt_thread_create("lcd_showwave", lcd_show_entry, RT_NULL,
                            512,
                            3, 30);
    if (lcd_show != RT_NULL)
         rt_thread_startup(lcd_show );
//*******************超溫處理線程的創建***********************************************************//			
		
		over_temhum = rt_thread_create("over_temhum ", overtem_entry, RT_NULL,
                            256,
                            1, 20);
    if (lcd_show != RT_NULL)
         rt_thread_startup(over_temhum  );		
//*******************wifi線程創建***********************************************************//			
		
		wifi= rt_thread_create("wifi ", wifi_entry, RT_NULL,
                            128,
                            2, 20);
    if (wifi != RT_NULL)
         rt_thread_startup(wifi);	
  
     
//*************測試wifi模塊************************************************************************//
}


審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    6876

    瀏覽量

    123578
  • 軟件框架
    +關注

    關注

    0

    文章

    22

    瀏覽量

    9895
  • RT-Thread
    +關注

    關注

    31

    文章

    1305

    瀏覽量

    40302
收藏 人收藏

    評論

    相關推薦

    基于RT-Thread的RoboMaster電控框架設

    由于 RT-Thread 穩定高效的內核,豐富的文檔教程,積極活躍的社區氛圍,以及設備驅動框架、Kconfig、Scons、日志系統、海量的軟件包……很難不選擇
    發表于 09-06 15:21 ?739次閱讀

    基于RT-Thread操作系統衍生rt-smart實時操作系統簡介

    1、rt-smart 實時操作系統簡介RT-Thread Smart(簡稱 rt-smart)嵌入式實時操作系統是基于
    發表于 06-22 17:56

    【原創精選】RT-Thread征文精選技術文章合集

    基于RT-Thread操作系統軟件框架設思路RTthread線程啟動詳解
    發表于 07-26 14:56

    RT-Thread操作系統有哪些優勢?

    軟件包和SDK,擴展系統功能 開發者說,RT-Thread是最簡潔,優雅的開源操作系統之一,簡單易用。 RT-Thread 主要采用 C 語
    發表于 06-28 08:16

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT
    發表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導在RT-Thread實時操作系統環境下如何進行編 程。
    發表于 11-26 16:16 ?0次下載

    RT Thread操作系統教程及資料

    ## RT-Thread 簡介 ## RT-Thread RTOS是一款來自中國的開源實時操作系統, 由國內一些專業開發人員開發、維護。 它不僅僅是一款高效、穩定的實時核心,也是一套
    發表于 05-11 14:54 ?2次下載

    RT-Thread軟件包定義和使用

    RT-Thread軟件包是運行于RT-Thread物聯網操作系統平臺上,面向不同應用領域的通用軟件組件 。
    的頭像 發表于 05-21 11:29 ?1w次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>軟件</b>包定義和使用

    RT-Thread Smart微內核操作系統發布!

    9月1日,由上海睿賽德電子科技有限公司舉辦的RT-Thread Smart微內核操作系統發布會于北京圓滿落幕,發布會以見微為主題,邀請到中國工程院院士、產業專家、高校教授及行業從業人員100余位蒞臨
    的頭像 發表于 09-09 10:49 ?2711次閱讀

    國民技術攜手RT-Thread共同推進MCU與RT-Thread操作系統廣泛適配

    日前,國民技術股份有限公司與知名物聯網操作系統廠商睿賽德科技(RT-Thread)簽署會員合作協議,正式成為RT-Thread高級會員。國民技術將基于通用MCU和RT-Thread物聯
    的頭像 發表于 12-16 09:56 ?2419次閱讀

    RT-Thread實時操作系統安裝向導

    、簡易開發、超低功耗、高安全性的物聯網操作系統RT-Thread 擁有良好的軟件生態,支持市面上所有主流的編譯工具如 GCC、Keil、IAR 等,工具鏈完善、友好,支持各類標準接口。
    發表于 04-02 09:43 ?7次下載

    RT-Thread操作系統的FreeRTOS兼容層

    的兼容項目中。 1 概述 這是一個針對RT-Thread國產操作系統的FreeRTOS操作系統兼容層,可以讓原有基于FreeRTOS操作系統的項目快速、無感地遷移到
    的頭像 發表于 01-14 00:55 ?1684次閱讀

    淺析RT-Thread設備驅動框架

    RT-Thread 設備框架屬于組件和服務層,是基于 RT-Thread 內核之上的上層軟件。設備框架是針對某一類外設,抽象出來的一套統一的
    的頭像 發表于 08-07 15:39 ?2046次閱讀

    基于 RT-Thread 的 RoboMaster 電控框架(一)

    由于 RT-Thread 穩定高效的內核,豐富的文檔教程,積極活躍的社區氛圍,以及設備驅動框架、Kconfig、Scons、日志系統、海量的軟件包……很難不選擇
    的頭像 發表于 09-19 19:55 ?806次閱讀

    新書發布——《實時操作系統應用技術:RT-Thread與ARM編程實踐》

    RT-Thread又一本新書《實時操作系統應用技術——基于RT-Thread與ARM的編程實踐》發布,標志著RT-Thread生態和實時操作系統
    的頭像 發表于 05-11 08:35 ?852次閱讀
    新書發布——《實時<b class='flag-5'>操作系統</b>應用技術:<b class='flag-5'>RT-Thread</b>與ARM編程實踐》
    主站蜘蛛池模板: 污污又黄又爽免费的网站| 一本到道免费线观看| 妖精视频一区二区免费| 国产成人无码视频一区二区三区 | 青青草干免费线观看| 98国产精品人妻无码免费| 麻豆一区二区免费播放网站| 18动漫在线观看| 美艳人妻在厨房翘着屁股| 91精品婷婷国产综合久久8| 美女扒开腿让男生桶免费看动态图| 中文字幕永久在线观看| 久热这里在线精品| 99久久久无码国产精精品| 漂亮的保姆5电影免费观看完整版中文 | 国模精品一区二区三区视频| 国产亚洲日韩另类在线播放| 在线亚洲免费| 玩弄放荡人妻一区二区三区| 久久亚洲精品成人| 国产高清视频a在线大全| 做暖免费观看日本| 无止侵犯高H1V3无止侵犯| 免费人成视频X8X8国产更快乐| 国产精品第1页在线观看| 97豆奶视频国产| 亚洲国产在线视频中文字| 欧美精品AV精品一区视频| 花蝴蝶高清在线视频免费观看 | 精品极品三大极久久久久| 中文字幕成人免费高清在线| 免费人成在线观看网站视频| 处破女免费播放| 亚洲色欲色欲综合网站| 男人天堂黄色| 国产精品青青在线麻豆| 一本色道久久综合一区| 欧美日韩亚洲成人| 国产人妻精品午夜福利免费不卡| 一本之道高清在线3线观看| 欧洲美女人 一级毛片|