基于A(yíng)RM7支持觸摸屏和實(shí)時(shí)操作系統的開(kāi)發(fā)與應用
其中,ReadTouchXY()函數通過(guò)TOUCH_X_MeasureX(void)、TOUCH_X_MeasureY(void)讀取對應坐標的X、Y軸的電壓值,并送入主控程序進(jìn)行坐標轉化,得出當前觸摸屏按壓的位置。
本文引用地址:http://dyxdggzs.com/article/112971.htmint ReadTouchXY(unsigned char
command)
{
//根據command參數,進(jìn)行X、Y向觸摸點(diǎn)選擇、去抖、位置的計算等
return ack;//返回觸摸屏對應位
置值;
}
mC/GUI及與操作系統的接口
mC/GUI是運行于操作系統之上的程序,它既需要與操作系統協(xié)調,又需要與各種輸入/輸出設備協(xié)調,即通過(guò)輸入設備接收用戶(hù)請求,通過(guò)輸出設備發(fā)送微處理器的處理結果。因此,mC/GUI的接口主要包括兩個(gè):與操作系統的接口和與輸入/輸出設備的接口,這也正是在移植mC/GUI的過(guò)程中所要解決的關(guān)鍵問(wèn)題。mC/GUI與mC/OS-II結合應用時(shí)通過(guò)上鎖和解鎖來(lái)解決資源互斥的問(wèn)題,其過(guò)程是通過(guò)在關(guān)鍵區域入口設置GUI_X_Lock()以獲得專(zhuān)一訪(fǎng)問(wèn)權,用完后在出口處設置GUI_X_Unlock()讓出資源,達到多個(gè)GUI任務(wù)對同一數據在關(guān)鍵區域內訪(fǎng)問(wèn)的互斥。
在mC/GUI移植到mC/OS-II的過(guò)程中,需要利用操作系統的資源來(lái)實(shí)現GUI所需要的功能,即利用μC/OSII提供的時(shí)間管理、任務(wù)管理和資源共享機制來(lái)實(shí)現μC/GUI中相應的功能,具體要實(shí)現以下函數的重新定義:
(1)時(shí)間函數
GUI_X_Delay() //延遲指定的時(shí)間段后返回
GUI_X_ExecIdle() //視窗管理器的非堵塞函數調用
GUI_X_GetTime() //返回當前
系統的時(shí)間,以毫秒為單位
(2)內核接口函數
GUI_X_InitOS() //初始化內核
接口模塊
GUI_X_GetTaskID() //返回一個(gè)
當前任務(wù)/線(xiàn)程唯一的32位標識符
GUI_X_Lock() //給GUI上鎖
GUI_X_UnLock() //解鎖GUI
GUI_X_Log() //返回調試信息
(3)LCD底層驅動(dòng)程序
要使mC/GUI能夠在目標系統上運行,首先要對mC/GUI進(jìn)行配置和修改,也就是移植。移植工作主要是指對配置頭文件中的宏定義根據具體情況進(jìn)行修改,包括LCD宏和LCD控制器宏。使用mC/GUI庫函數時(shí),必須在主函數前調用頭文件“gui.h”,并根據需要做適當的修改。值得注意的是,在此文件的預定義語(yǔ)句中,必須將GUI_SUPPORT_TOUCH設為1。如果需要在屏幕上顯示中文,除了添加中文字庫到工程中外,還需要將GULDEFAULT_FONT設為&GULFontHZ12,HZ12代表使用的中文字體。如果需要在mC/GUI的控件中使用中文,也需要在控件的預定義語(yǔ)句中作相應的修改。由于ARM7芯片S3C44B0X內部集成了LCD控制器,LCD底層驅動(dòng)程序主要是設計與LCD屏相關(guān)的參數以及其特殊的控制寄存器,主要包括以下的參數和寄存器:
#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水平字節尺寸
#dene SCR_XSIZE (640)
//LCD水平尺寸
#dene SCR_XSIZE (640)
//LCD水平尺寸
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
模數轉換器相關(guān)文章:模數轉換器工作原理
評論