日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]這個月20號準備去參加RT-Thread一年一度的RDC開發(fā)者大會,順便會帶上我們公司的產(chǎn)品,這個產(chǎn)品就用到了大彩串口屏,所以昨天我也寫了一篇表驅(qū)動法在大彩串口屏上的應(yīng)用。

這個月20號準備去參加RT-Thread一年一度的RDC開發(fā)者大會,順便會帶上我們公司的產(chǎn)品,這個產(chǎn)品就用到了大彩串口屏,所以昨天我也寫了一篇表驅(qū)動法在大彩串口屏上的應(yīng)用,文章如下:

【12月】大彩串口屏RT-Thread Nano STM32表驅(qū)動法產(chǎn)品應(yīng)用開發(fā)

接下來我會做一個產(chǎn)品級的基于大彩串口屏的開源項目,用的大彩串口屏型號是:DC80480F070_6111_ON,128M,如下,這是一個7寸屏幕,分辨率800*480;當(dāng)然價格也是超級便宜的了,入手價也就180塊錢,今年屏瘋狂漲價,這個價格已經(jīng)很良心了。

近年來,RTOS在嵌入式系統(tǒng)設(shè)計中的主導(dǎo)地位也越來越明確,越來越多的工程師選用RTOS來完成產(chǎn)品功能的開發(fā);從最熟悉不過的ucos,到后來的freertosrt-thread、Tencentos tiny等等,以使用者的角度,我在產(chǎn)品開發(fā)上用過的RTOS非常多;但最后得出一個結(jié)論,只要通一個,其它則一通百通;正因為RTOS種類越來越多,所以ARM公司推出了CMSIS-RTOS,為統(tǒng)一操作系統(tǒng)、降低嵌入式門檻而發(fā)布的操作系統(tǒng)標準軟件接口,CMSIS-RTOS的作用用通俗的話來講就是:勞資不管你是什么RTOS,你只需要學(xué)習(xí)我的CMSIS-RTOS怎么用就可以了,但前提是你要把那些RTOS的接口適配到CMSIS-RTOS上,然后你就可以拋棄那些含義相同,寫法不同的RTOS API,通通都可以不用它們,只用CMSIS-RTOS的API接口即可!

CMSIS-RTOS架構(gòu)圖如下:

詳情學(xué)習(xí)可以參考世偉兄之前在騰訊實習(xí)的時候周末寫的文章:

RTOS內(nèi)功修煉記(八)— CMSIS RTOS API,內(nèi)核通用API接口

1、串口屏是什么?

串口屏,在百度百科上是這么來解釋的:

一套由單片機或PLC帶控制器的顯示方案,顯示方案中的通訊部分由串口通訊,UART串口或者SPI串口等;它由顯示驅(qū)動板、外殼、LCD液晶顯 示屏三部分構(gòu)成。接收用戶單片機串口發(fā)送過來的指令,完成在LCD上繪圖的所有操作。

1.1、大彩串口屏的數(shù)據(jù)收發(fā)接口

1.1.1、大彩串口屏數(shù)據(jù)接收處理

收的部分昨天的文章已經(jīng)介紹過了:

【12月】大彩串口屏RT-Thread Nano STM32表驅(qū)動法產(chǎn)品應(yīng)用開發(fā)

是通過一種類似消息機制的隊列來進行實現(xiàn),然后將隊列里的數(shù)據(jù)進行拼接加工后滿足大彩科技定義的一種協(xié)議指令集,所以中斷服務(wù)函數(shù)實現(xiàn)如下,這樣就可以持續(xù)的來接收串口屏回復(fù)的指令:

/**
??*?@brief?This?function?handles?USART2?global?interrupt.
??*/
void?USART2_IRQHandler(void)
{
????/*?USER?CODE?BEGIN?USART2_IRQn?0?*/
????uint32_t?i?;
????uint32_t?uart2_dma_rxlen?;
????/*進入中斷調(diào)用*/
????rt_interrupt_enter();
????if(__HAL_UART_GET_IT_SOURCE(&huart2,?UART_IT_IDLE)?!=?RESET)
????{
????????__HAL_UART_CLEAR_IDLEFLAG(&huart2);
????????HAL_UART_DMAStop(&huart2);
????????uart2_dma_rxlen?=?HMI_LCD_U2_BUFFER_SIZE?-?(__HAL_DMA_GET_COUNTER(huart2.hdmarx));
????
????????for(i?=?0;?i?????????{
????????????queue_push(HMI_LCD_Handler.HMI_LCD_U2_Buffer[i]);
????????}

????????__HAL_UART_ENABLE_IT(&huart2,?UART_IT_IDLE);
????????HAL_UART_Receive_DMA(&huart2,?HMI_LCD_Handler.HMI_LCD_U2_Buffer,?HMI_LCD_U2_BUFFER_SIZE);
????}

????/*?USER?CODE?END?USART2_IRQn?0?*/
????HAL_UART_IRQHandler(&huart2);
????/*?USER?CODE?BEGIN?USART2_IRQn?1?*/
???/*離開中斷調(diào)用*/
???rt_interrupt_leave();
??/*?USER?CODE?END?USART2_IRQn?1?*/
}

以下是大彩科技提供給開發(fā)者的MCU例程文檔中接收指令集的流程圖:

以使用RT-Thread為例,在進入中斷前調(diào)用:rt_interrupt_enter,在離開中斷前調(diào)用:rt_interrupt_leave。

以上描述來自RT-Thread文檔中心。

比如TencentOS tiny也提供了一組API:

tos_knl_irq_enter
tos_knl_irq_leave

在進入中斷處理函數(shù)調(diào)用tos_knl_irq_enter,在退出前調(diào)用tos_knl_irq_leave

又比如UCOSIII也提供了一組API:

OSIntEnter();
OSIntExit();

在進入中斷處理函數(shù)調(diào)用OSIntEnter,在退出前調(diào)用OSIntExit。

其它的RTOS也是類似的,這里就不多做介紹了,有興趣可以自己測試和研究。

1.1.2、大彩串口屏數(shù)據(jù)發(fā)送處理

大彩串口屏提供了hmi_driver.c這個文件,這個文件提供了一系列串口命令驅(qū)動的函數(shù),例如設(shè)置控件的值等等,這些 操作依賴于以下這些發(fā)送接口:

#define?TX_8(P1)?SEND_DATA((P1)&0xFF)????????????????????//發(fā)送單個字節(jié)
#define?TX_8N(P,N)?SendNU8((uint8?*)P,N)?????????????????//發(fā)送N個字節(jié)
#define?TX_16(P1)?TX_8((P1)>>8);TX_8(P1)?????????????????//發(fā)送16位整數(shù)
#define?TX_16N(P,N)?SendNU16((uint16?*)P,N)??????????????//發(fā)送N個16位整數(shù)
#define?TX_32(P1)?TX_16((P1)>>16);TX_16((P1)&0xFFFF)?????//發(fā)送32位整數(shù)

上面這些接口,最終我們需要提供這樣一個發(fā)送單個字節(jié)的函數(shù):

/*!?
*??\brief??發(fā)送一個字節(jié)
*??\param??c?
*/
void?SEND_DATA(uint8?c)
{
????SendChar(c);
}

那我們就直接實現(xiàn)SendChar這個函數(shù)就行了,以帶RT-Thread操作系統(tǒng)的STM32工程為例,編寫如下接口:

void?SendChar(uint8_t?data)
{
????/*調(diào)度器上鎖*/
????rt_enter_critical();
????HAL_UART_Transmit(&huart2,?&data,?1,?1000);
????while(__HAL_UART_GET_FLAG(&huart2,?UART_FLAG_TXE)?!=?SET);
????/*調(diào)度器解鎖*/
????rt_exit_critical();
}

這里為什么要加上調(diào)度鎖呢??假設(shè),你在界面上需要在不同任務(wù)里同時調(diào)用如下接口:

void?SetTextValue(u16?screen_id,?u16?control_id,?u8?*str)
{
????BEGIN_CMD();
????TX_8(0xB1);
????TX_8(0x10);
????TX_16(screen_id);
????TX_16(control_id);
????SendStrings(str);
????END_CMD();
}

這個接口是用來在給界面上某個文本控件顯示字符串用的;當(dāng)多個任務(wù)同時調(diào)用該接口時,這樣不就是我們之前談的打架問題了嗎?在多任務(wù)系統(tǒng)中,這就是一種潛在的風(fēng)險,當(dāng)一個任務(wù)在使用某個資源的過程中,還沒有完全結(jié)束對資源的訪問時就被打斷了,這樣就會出現(xiàn)一些奇奇怪怪的問題,比如之前我用OLED結(jié)合RTOS編程時候也會出現(xiàn)像屏幕花屏的現(xiàn)象,這里我采用的方法是直接在底層的接口函數(shù)處加上調(diào)度鎖,以防止這種情況發(fā)生,當(dāng)然,還有另外一種方法可以實現(xiàn),那就是互斥鎖。

至于互斥鎖該怎么用,打開各大RTOS的API參考手冊,上面會詳細的告訴你如何創(chuàng)建,如何使用,照著做就是了,這里就不多說了。

初學(xué)RTOS會遇到各種各樣的坑,以上我提到的這些坑都是初學(xué)者碰得最多的,還有一些測試了很久都沒有被解決且難以復(fù)現(xiàn)的問題;最后都是在不斷的調(diào)試中找到分析問題的方法和解決技巧,但萬變不離其宗,我們要努力去Get最基礎(chǔ)的操作系統(tǒng)原理,在理論基礎(chǔ)知識的支撐上,才能更好的幫我們?nèi)シ治鰡栴}和解決問題。

往期精彩

讓傳感器數(shù)據(jù)更直觀之LCD曲線顯示

【12月】大彩串口屏RT-Thread Nano STM32表驅(qū)動法產(chǎn)品應(yīng)用開發(fā)

開源作品:基于TencentOS tiny英國達特甲醛探測儀產(chǎn)品級開發(fā)(二)

整理了很久之前在碼云/Github/CSDN上收藏的嵌入式產(chǎn)品級項目分享開源

覺得本次分享的文章對您有幫助,隨手點[在看]并轉(zhuǎn)發(fā)分享,也是對我的支持。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉