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

當(dāng)前位置:首頁(yè) > 消費(fèi)電子 > 觸控感測(cè)
[導(dǎo)讀] 概述 隨著信息技術(shù)的發(fā)展,支持圖形界面的觸摸操作和實(shí)時(shí)操作系統(tǒng)相結(jié)合的應(yīng)用系統(tǒng)已經(jīng)越來(lái)越廣泛地應(yīng)用到航空航天、軍事、消費(fèi)類電子、通訊設(shè)備等領(lǐng)域。mC/OS-II操作系統(tǒng)是一種占先式、實(shí)時(shí)

概述

隨著信息技術(shù)的發(fā)展,支持圖形界面的觸摸操作和實(shí)時(shí)操作系統(tǒng)相結(jié)合的應(yīng)用系統(tǒng)已經(jīng)越來(lái)越廣泛地應(yīng)用到航空航天、軍事、消費(fèi)類電子、通訊設(shè)備等領(lǐng)域。mC/OS-II操作系統(tǒng)是一種占先式、實(shí)時(shí)操作系統(tǒng)(RTOS),由于其內(nèi)核可拆減、可剝離性,使得它在實(shí)時(shí)控制領(lǐng)域中有著廣泛的應(yīng)用。它不僅減小了因?yàn)橄到y(tǒng)硬件設(shè)計(jì)缺陷帶來(lái)的不可靠因素,而且增強(qiáng)了系統(tǒng)的控制實(shí)時(shí)性,從軟件方面進(jìn)一步增強(qiáng)了ARM控制系統(tǒng)的性能。另外,新版本的mC/OS-II已經(jīng)通過(guò)了FAA認(rèn)證,很適合應(yīng)用于對(duì)實(shí)時(shí)性要求很高的嵌入式工業(yè)控制領(lǐng)域,如目前應(yīng)用較廣泛的軍用戰(zhàn)斗機(jī)、攻擊機(jī)和火控系統(tǒng)等。

支持圖形界面操作(mC/GUI)是一種較為流行的人機(jī)交互系統(tǒng),它能夠提供了友好的人機(jī)交互平臺(tái),使得微處理器成為大多數(shù)人都能夠使用和接受的工具。與PC機(jī)不同,由于mC/OS-II基本為“黑盒”式操作系統(tǒng),對(duì)人機(jī)界面的控制與開(kāi)發(fā)需比較復(fù)雜的編程技術(shù)和時(shí)序控制技術(shù)。ARM7嵌入式實(shí)時(shí)控制系統(tǒng)對(duì)mC/GUI的要求更高,包括輕型、占用資源少、高性能、高可靠性及可配置等。因此,如何將ARM7、mC/GUI、mC/OS-II、觸摸屏驅(qū)動(dòng)和應(yīng)用程序有機(jī)的結(jié)合起來(lái),在ARM7上進(jìn)行運(yùn)行并完成用戶想實(shí)現(xiàn)的任務(wù),成為在嵌入式操作系統(tǒng)開(kāi)發(fā)中的一項(xiàng)關(guān)鍵技術(shù)。

mC/OS-II嵌入式操作系統(tǒng)的移植

mC/OS-II作為操作系統(tǒng)的內(nèi)核,主要的任務(wù)就是完成多任務(wù)之間的調(diào)度和同步,協(xié)調(diào)各個(gè)硬件源不會(huì)沖突。與其它嵌入式操作系統(tǒng)相比,它具有系統(tǒng)透明、可拆減、接口簡(jiǎn)單的特點(diǎn)。下面就如何在S3C44B0進(jìn)行操作系統(tǒng)移植和修改作簡(jiǎn)要的描述:

(1)重新修改OS_CPU.H文件

a)定義數(shù)據(jù)類型:mC/OS-Ⅱ不使用C語(yǔ)言中的short、int、long等與處理器類型有關(guān)的數(shù)據(jù)類型,而代之以移植性強(qiáng)的數(shù)據(jù)類型,這樣既直觀又便于移植;

b)定義堆棧增長(zhǎng)類型和ARM運(yùn)行的模式:雖然ARM處理器對(duì)堆棧向上與向下的兩種增長(zhǎng)方式都予以支持,但由于編譯器ADS僅支持堆棧從上往下,并且必須是滿遞減堆棧,所以在文件中用來(lái)定義堆棧增長(zhǎng)方式的常量OS_STK_GROWTH 的值為1;

c)需對(duì)外部函數(shù)聲明:如在mC/OS-II.h頭文件中,有些要移植的函數(shù)已經(jīng)聲明,包括:OSTaskStkInit()、OSIntCtxSw(void)、OSStartHighRdy(void) 。

(2)修改OS_CPU_C.C文件

a)任務(wù)堆棧初始化函數(shù)OSTaskStkInit():在編寫任務(wù)堆棧初始化函數(shù)OSTaskStkInit()之前,必須先根據(jù)處理器的結(jié)構(gòu)和特點(diǎn)確定任務(wù)的堆棧結(jié)構(gòu);

b)鉤子函數(shù):mC/OS-II為了用戶在系統(tǒng)函數(shù)中書(shū)寫自己的代碼而預(yù)置了一些鉤子函數(shù)(如OSTImeTIckHook),這些函數(shù)在移植時(shí)可全為空函數(shù),可根據(jù)用戶的需要添加。

(3)重點(diǎn)編寫OS_CPU_A.S文件a)開(kāi)/關(guān)中斷函數(shù):在ARM7處理器核中可利用改變程序狀態(tài)寄存器CPSR中的相應(yīng)控制位實(shí)現(xiàn);

b)OSStartHighRdy(void):OSStart()函數(shù)調(diào)用OSStartHighRdy()來(lái)使就緒態(tài)任務(wù)中優(yōu)先級(jí)最高的任務(wù)開(kāi)始執(zhí)行;

c)OS_TASK_SW(void):μC/OS-II通過(guò)調(diào)用OSSched()函數(shù)來(lái)完成任務(wù)調(diào)度的,OSSched()先將最高優(yōu)先級(jí)任務(wù)的地址裝載到OSTCBHighRdy,再通過(guò)調(diào)用OS_TASK_SW()執(zhí)行任務(wù)級(jí)的任務(wù)切換,OS_TASK_SW主要完成保護(hù)現(xiàn)場(chǎng),完成用于的任務(wù),恢復(fù)現(xiàn)場(chǎng);

d)OSIntCtxSw(void):OSIntExit()通過(guò)調(diào)用OSIntCtxSw(),在中斷服務(wù)程序中執(zhí)行任務(wù)切換功能。

e)時(shí)鐘節(jié)拍函數(shù):在本移植中,只使用了ARM的IRQ中斷。由于不同的ARM芯片的中斷系統(tǒng)并不完全一樣,因此不可能編寫出對(duì)所有使用ARM核的處理器通用的中斷及節(jié)拍移植代碼,但是這是后續(xù)任務(wù)管理中重點(diǎn)需要操作系統(tǒng)進(jìn)行處理的,OSTIckISR的實(shí)現(xiàn)代碼見(jiàn)程序清單。

程序清單 OSTIckISR()

OSTickISR

STMFD SP!, {R0-R3,R12,LR}

BL OSIntEnter

BL user_function ;調(diào)用用戶

處理的中斷處理程序

BL OSIntExit

LDMFD SP!,{R0-R3,R12,LR}

S3C44B0觸摸屏驅(qū)動(dòng)程序編制

本文采用固定參考電壓模式,在驅(qū)動(dòng)程序開(kāi)發(fā)過(guò)程中,需要關(guān)注時(shí)鐘端、輸入端和輸出端的時(shí)序特性。首先檢測(cè)PENIRQ是否為低電平,只有觸摸屏有接觸時(shí)此位才會(huì)為低電平。利用軟件模擬DIN、DOUT和DCLK上的三線串行傳輸時(shí)序,將讀取的X或Y坐標(biāo)數(shù)值的控制字串行送人ADS7843,然后再?gòu)膶?duì)應(yīng)的函數(shù)讀出該坐標(biāo)值,獲取坐標(biāo)值的源程序如下:

int TOUCH_X_MeasureX(void)

{

X=ReadTouchXY(CHX);

return X;

}

int TOUCH_X_MeasureY(void)

{

Y=ReadTouchXY(CHY);

return Y;

}

其中,ReadTouchXY()函數(shù)通過(guò)TOUCH_X_MeasureX(void)、TOUCH_X_MeasureY(void)讀取對(duì)應(yīng)坐標(biāo)的X、Y軸的電壓值,并送入主控程序進(jìn)行坐標(biāo)轉(zhuǎn)化,得出當(dāng)前觸摸屏按壓的位置。

int ReadTouchXY(unsigned char

command)

{

//根據(jù)command參數(shù),進(jìn)行X、Y向觸摸點(diǎn)選擇、去抖、位置的計(jì)算等

return ack;//返回觸摸屏對(duì)應(yīng)位

置值;

}

mC/GUI及與操作系統(tǒng)的接口

mC/GUI是運(yùn)行于操作系統(tǒng)之上的程序,它既需要與操作系統(tǒng)協(xié)調(diào),又需要與各種輸入/輸出設(shè)備協(xié)調(diào),即通過(guò)輸入設(shè)備接收用戶請(qǐng)求,通過(guò)輸出設(shè)備發(fā)送微處理器的處理結(jié)果。因此,mC/GUI的接口主要包括兩個(gè):與操作系統(tǒng)的接口和與輸入/輸出設(shè)備的接口,這也正是在移植mC/GUI的過(guò)程中所要解決的關(guān)鍵問(wèn)題。mC/GUI與mC/OS-II結(jié)合應(yīng)用時(shí)通過(guò)上鎖和解鎖來(lái)解決資源互斥的問(wèn)題,其過(guò)程是通過(guò)在關(guān)鍵區(qū)域入口設(shè)置GUI_X_Lock()以獲得專一訪問(wèn)權(quán),用完后在出口處設(shè)置GUI_X_Unlock()讓出資源,達(dá)到多個(gè)GUI任務(wù)對(duì)同一數(shù)據(jù)在關(guān)鍵區(qū)域內(nèi)訪問(wèn)的互斥。

在mC/GUI移植到mC/OS-II的過(guò)程中,需要利用操作系統(tǒng)的資源來(lái)實(shí)現(xiàn)GUI所需要的功能,即利用μC/OSII提供的時(shí)間管理、任務(wù)管理和資源共享機(jī)制來(lái)實(shí)現(xiàn)μC/GUI中相應(yīng)的功能,具體要實(shí)現(xiàn)以下函數(shù)的重新定義:

(1)時(shí)間函數(shù)

GUI_X_Delay() //延遲指定的時(shí)間段后返回

GUI_X_ExecIdle() //視窗管理器的非堵塞函數(shù)調(diào)用

GUI_X_GetTime() //返回當(dāng)前

系統(tǒng)的時(shí)間,以毫秒為單位

(2)內(nèi)核接口函數(shù)

GUI_X_InitOS() //初始化內(nèi)核

接口模塊

GUI_X_GetTaskID() //返回一個(gè)

當(dāng)前任務(wù)/線程唯一的32位標(biāo)識(shí)符

GUI_X_Lock() //給GUI上鎖

GUI_X_UnLock() //解鎖GUI

GUI_X_Log() //返回調(diào)試信息

(3)LCD底層驅(qū)動(dòng)程序

要使mC/GUI能夠在目標(biāo)系統(tǒng)上運(yùn)行,首先要對(duì)mC/GUI進(jìn)行配置和修改,也就是移植。移植工作主要是指對(duì)配置頭文件中的宏定義根據(jù)具體情況進(jìn)行修改,包括LCD宏和LCD控制器宏。使用mC/GUI庫(kù)函數(shù)時(shí),必須在主函數(shù)前調(diào)用頭文件“gui.h”,并根據(jù)需要做適當(dāng)?shù)男薷摹V档米⒁獾氖?,在此文件的預(yù)定義語(yǔ)句中,必須將GUI_SUPPORT_TOUCH設(shè)為1。如果需要在屏幕上顯示中文,除了添加中文字庫(kù)到工程中外,還需要將GULDEFAULT_FONT設(shè)為&GULFontHZ12,HZ12代表使用的中文字體。如果需要在mC/GUI的控件中使用中文,也需要在控件的預(yù)定義語(yǔ)句中作相應(yīng)的修改。由于ARM7芯片S3C44B0X內(nèi)部集成了LCD控制器,LCD底層驅(qū)動(dòng)程序主要是設(shè)計(jì)與LCD屏相關(guān)的參數(shù)以及其特殊的控制寄存器,主要包括以下的參數(shù)和寄存器:

#dene SCR_XSIZE (640)

//LCD水平尺寸

#dene SCR_YSIZE (240)

//LCD垂直尺寸

#dene LCD_XSIZE (640)

//LCD水平分辨率

#dene LCD_YSIZE (240)

//LCD垂直分辨率

#define ARRAY_SIZE_COLOR (SCR_XSIZE/1*SCR_YSIZE)

//LCD水平與垂直比例

#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)

//LCD水平字節(jié)尺寸

#dene SCR_XSIZE (640)

//LCD水平尺寸

#dene SCR_XSIZE (640)

//LCD水平尺寸

寄存器的定義根據(jù)不同的微處理器和LCD顏色、尺寸等來(lái)定義,這里以S3C44B0X說(shuō)明:

rLCDCON1=(0)|(2《《5)|(MVAL_USED《《7)|(0x3《《8)|(0x3《《10)|(CLKVAL_COLOR《《12);

rLCDCON2=(LINEVAL)

|(HOZVAL_COLOR《《10)|(10《《21);

rLCDSADDR1= (0x3《《27)|(((U32)frameBuffer》》22)《《21)|M5D((U32)frameBuer》》1);

rLCDSADDR3= (LCD_XSIZE/2)|(((SCR_XSIZE-LCD_XSIZE)/2)《《9);

嵌入式操作系統(tǒng)下應(yīng)用程序的開(kāi)發(fā)

在嵌入式操作系統(tǒng)下開(kāi)發(fā)基于ARM7的應(yīng)用程序主要是進(jìn)行任務(wù)的劃分,根據(jù)每個(gè)任務(wù)的緊急程度建立不同優(yōu)先級(jí),下面就任務(wù)劃分的原則和實(shí)例進(jìn)行說(shuō)明:

任務(wù)劃分原則

將一個(gè)軟件系統(tǒng)分解成并行任務(wù)時(shí),主要考慮系統(tǒng)內(nèi)功能的異步性。通過(guò)分析數(shù)據(jù)流圖中的變換,確定哪些變換是并行的,哪些變換本質(zhì)上是順序執(zhí)行的。通過(guò)這種方法,一個(gè)變換對(duì)應(yīng)一個(gè)任務(wù),或一個(gè)變換包括幾個(gè)任務(wù),同時(shí)應(yīng)遵循如下原則:

● I/O依賴性:由于I/O速度的限制,對(duì)它操作的程序應(yīng)獨(dú)立為一個(gè)任務(wù);

● 時(shí)間關(guān)鍵性:將有時(shí)間關(guān)鍵性的功能分離出來(lái),組成獨(dú)立的任務(wù),賦予高優(yōu)先級(jí);

● 計(jì)算功能:計(jì)算功能要占用較多CPU時(shí)間間,應(yīng)賦予他們較低的優(yōu)先級(jí);

● 功能內(nèi)聚:將緊密相關(guān)的功能組成一個(gè)任務(wù),使各種功能共享資源或相同事件的驅(qū)動(dòng);

● 時(shí)間內(nèi)聚:將在同一時(shí)間內(nèi)完成的任務(wù),即使功能不相關(guān),組成一個(gè)獨(dú)立的任務(wù);

● 周期執(zhí)行功能:相同周期內(nèi)執(zhí)行的各功能組成一個(gè)任務(wù),頻率高的賦予高優(yōu)先級(jí)。

應(yīng)用實(shí)例

本文以實(shí)際項(xiàng)目為例進(jìn)行分析,在本項(xiàng)目中觸摸屏作為輸入設(shè)備、系統(tǒng)檢測(cè)輸出窗口,通過(guò)控制器嵌入mC/OS-II操作系統(tǒng)和mC/GUI配合使用實(shí)現(xiàn)完成相應(yīng)按鈕指令的功能,并在后臺(tái)的特定任務(wù)中完成各種中斷、計(jì)算、通訊等功能。因此進(jìn)行了如表1所列的任務(wù)劃分和定義。

觸摸屏的應(yīng)用程序可以根據(jù)觸摸屏的實(shí)際使用情況來(lái)編寫,但在編寫時(shí)應(yīng)該注意模塊化的編程思想,以便它能作為一種輸入平臺(tái)簡(jiǎn)便的移植到相關(guān)的應(yīng)用中。本文編寫了一個(gè)泵的控制系統(tǒng)作為觸摸屏應(yīng)用設(shè)計(jì)的實(shí)例。利用圖形軟件mC/GUI編寫的控制系統(tǒng)操作界面如圖1所示,當(dāng)用觸摸筆或者手指直接點(diǎn)擊圖中可編輯的按鈕控件(如最高壓力、設(shè)定流量和設(shè)定時(shí)間),彈出參數(shù)輸入對(duì)話框,如圖2所示。mC/GUI的設(shè)計(jì)具有模塊化的特點(diǎn),在不同的模塊中包含了不同的層,比如LCD驅(qū)動(dòng)包含了所有與LCD的接口。同樣,mC/GUI也提供了通用觸摸屏的應(yīng)用程序接口(API),應(yīng)用程序可以通過(guò)將它的函數(shù)庫(kù)添加到工程中來(lái)方便的使用。

結(jié)語(yǔ)

在mC/OS-II實(shí)時(shí)操作系統(tǒng)和ARM平臺(tái)上開(kāi)發(fā)應(yīng)用軟件已經(jīng)成為現(xiàn)代工業(yè)領(lǐng)域熱點(diǎn),可以大大地降低軟件程序編寫的時(shí)間和任務(wù)難度,提高了各模塊的獨(dú)立性,縮短開(kāi)發(fā)周期,并且系統(tǒng)具有更好的穩(wěn)定性、可移植性和可維護(hù)性。本文以實(shí)際的項(xiàng)目為應(yīng)用背景,開(kāi)發(fā)的基于ARM7支持觸摸屏(mC/GUI)的實(shí)時(shí)操作系統(tǒng)(mC/OS-II)具有良好的人機(jī)交互界面,完善的驅(qū)動(dòng)、控制、顯示、檢測(cè)和計(jì)算功能,支持單機(jī)和網(wǎng)絡(luò)控制運(yùn)行。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

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

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