在裸機(jī)系統(tǒng)中,以一定的時(shí)間間隔循環(huán)調(diào)用CTSU APIs
在QE for Cap Touch工具生成的Cap Touch Sample Code中
?使用While(true)實(shí)現(xiàn)循環(huán)調(diào)用CTSU APIs
?使用R_BSP_SoftwareDelay()實(shí)現(xiàn)適當(dāng)?shù)亩〞r(shí)間隔
在嵌入式多任務(wù)系統(tǒng)中,也需要以一定的時(shí)間間隔循環(huán)運(yùn)行CTSU APIs
?CTSU運(yùn)行涉及的相關(guān)ISR以及API可直接移植到多任務(wù)系統(tǒng)中
?需要對(duì)QE for Cap Touch工具生成的CapTouch Sample Codee進(jìn)行改寫
CTSU底層驅(qū)動(dòng)程序和應(yīng)用程序在向RTOS系統(tǒng)中移植時(shí),一般需要考慮的基本內(nèi)容
?RTOS中Systick的設(shè)定
?RTOS延時(shí)函數(shù)的使用
?MCU中斷優(yōu)先級(jí)與RTOS任務(wù)優(yōu)先級(jí)的設(shè)置
?QE for Cap Touch工具生成的CTSU CapTouch Sample Code的改寫
Systick的設(shè)定
以FreeRTOS為例,使用e2 studio新建的FreeRTOS工程中, Systick的默認(rèn)設(shè)定為1ms
RTOS延時(shí)函數(shù)的使用
以FreeRTOS為例,F(xiàn)reeRTOS延時(shí)函數(shù)vTaskDelay()和vTaskDelayUntil()
? FreeRTOS提供了兩個(gè)系統(tǒng)延時(shí)函數(shù):相對(duì)延時(shí)函數(shù)vTaskDelay()和絕對(duì)延時(shí)vTaskDelayUntil()。
?這兩個(gè)延時(shí)函數(shù)和自己實(shí)現(xiàn)的延時(shí)函數(shù)不同,這兩個(gè)延時(shí)函數(shù)一旦被調(diào)用,當(dāng)前任務(wù)會(huì)立刻進(jìn)入阻塞狀態(tài),而自己寫的延時(shí)函數(shù)(以for循環(huán)等形式實(shí)現(xiàn)的軟件延時(shí))會(huì)被當(dāng)做有效任務(wù)而一直執(zhí)行。
?相對(duì)延時(shí)是指每次延時(shí)都是從任務(wù)執(zhí)行函數(shù)vTaskDelay()開始,延時(shí)指定的時(shí)間結(jié)束;
vTaskDelay()函數(shù)的參數(shù)xTicksToDelay表示延時(shí)多少個(gè)系統(tǒng)節(jié)拍時(shí)鐘周期(Systick)。
void vTaskDelay( const TickType_t xTicksToDelay )
?絕對(duì)延時(shí)是指每隔指定的時(shí)間,執(zhí)行一次調(diào)用vTaskDelayUntil()函數(shù)的任務(wù)。換句話說:任務(wù)以固定的頻率執(zhí)行
MCU中斷優(yōu)先級(jí)與RTOS任務(wù)優(yōu)先級(jí)的設(shè)置
以FreeRTOS任務(wù)優(yōu)先級(jí)為例說明
FreeRTOS中任務(wù)的最高優(yōu)先級(jí)是通過FreeRTOSConfig.h文件中的configMAX_PRIORITIES進(jìn)行配置的,用戶實(shí)際可以使用的優(yōu)先級(jí)范圍是0到configMAX_PRIORITIES – 1,建議用戶配置宏定義configMAX_PRIORITIES的最大值不要超過32。根據(jù)實(shí)際應(yīng)用配置,配置越大,需要的內(nèi)存空間越大
使用e2 studio新建的FreeRTOS工程中, configMAX_PRIORITIES默認(rèn)為5
MCU中斷優(yōu)先級(jí)和FreeRTOS任務(wù)優(yōu)先級(jí)區(qū)別
簡(jiǎn)單地說,這兩者之間沒有任何關(guān)系,不管中斷的優(yōu)先級(jí)是多少, MCU中斷的優(yōu)先級(jí)永遠(yuǎn)高于任何FreeRTOS任務(wù)的優(yōu)先級(jí),即在執(zhí)行的過程中, MCU中斷來了就開始執(zhí)行中斷服務(wù)程序。
MCU中斷優(yōu)先級(jí)數(shù)值越小,優(yōu)先級(jí)就越高;而FreeRTOS的任務(wù)優(yōu)先級(jí)是,任務(wù)優(yōu)先級(jí)數(shù)值越小,任務(wù)優(yōu)先級(jí)越低。
MCU中斷優(yōu)先級(jí)與RTOS任務(wù)優(yōu)先級(jí)
通常的優(yōu)先級(jí)分配方案:
? IRQ任務(wù):IRQ任務(wù)是指通過中斷服務(wù)程序進(jìn)行觸發(fā)的任務(wù),所有任務(wù)中優(yōu)先級(jí)最高
?高優(yōu)先級(jí)后臺(tái)任務(wù):比如按鍵檢測(cè)、觸摸檢測(cè)、USB消息處理
?低優(yōu)先級(jí)時(shí)間調(diào)度任務(wù):比如LCD界面顯示、LED數(shù)碼管顯示
IRQ任務(wù)和高優(yōu)先級(jí)任務(wù)必須設(shè)置為阻塞式(調(diào)用消息等待或者延遲等函數(shù)),只有這樣高優(yōu)先級(jí)任務(wù)才會(huì) 釋放CPU的使用權(quán),從而低優(yōu)先級(jí)任務(wù)才會(huì)有機(jī)會(huì)得到執(zhí)行。
CTSU CapTouch觸摸按鍵任務(wù)建議配置成高優(yōu)先級(jí)任務(wù),并且設(shè)置成阻塞式。
CTSU CapTouch Sample Code的改寫
默認(rèn)的CTSU CapTouch Sample Code
?QE for Cap Touch工具可生成默認(rèn)的CapTouch Sample Code
?Sample Code中使用While(1)死循環(huán)等待測(cè)量完成,以及使用R_BSP_SoftwareDelay()實(shí)現(xiàn)CTSU APIs的20ms左右定時(shí)間隔的循環(huán)調(diào)用
?CapTouch觸摸按鍵對(duì)于實(shí)時(shí)性的要求并不高,但是涉及CTSU運(yùn)行的很多參數(shù)都與循環(huán)調(diào)用的定時(shí)間隔有關(guān),因此較大程度決定了觸摸按鍵的靈敏度
例如Drift Correction Interval
下圖中的設(shè)定值為255,實(shí)際值為255 x API定時(shí)調(diào)用間隔,按鍵按下的positive noise filter和按鍵釋放的Negative Noise Filter也是如此。
因此,用戶需要根據(jù)系統(tǒng)對(duì)Cap Touch觸摸按鍵的實(shí)時(shí)性和靈敏度的要求,合理的改寫默認(rèn)的CTSU CapTouch Sample Code
對(duì)默認(rèn)的CTSU CapTouch Sample Code進(jìn)行改寫
以FreeRTOS為例
? 合理設(shè)定Cap Touch Thread的優(yōu)先級(jí),例如設(shè)定為最高優(yōu)先級(jí)
?API調(diào)用報(bào)錯(cuò)時(shí)的改寫
while(ture){} 改為 return
?延時(shí)R_BSP_SoftwareDelay() 的改寫
可改為vTaskDelay()
?Qe_touch_main()以及CTSU_FN_ISR測(cè)量完成中斷Callback函數(shù)的改寫
增加OS Timer和Semaphore,定時(shí)啟動(dòng)CTSU的測(cè)量,釋放while(1)等待測(cè)量完成中斷時(shí)的CPU時(shí)間,此時(shí)可取消while(0 == g_qe_touch_flag)和R_BSP_SoftwareDelay() / vTaskDelay()
目的:分析整個(gè)系統(tǒng)中CapTouch線程與用戶線程的運(yùn)行關(guān)系
根據(jù)觸摸按鍵的數(shù)量:
?確保CapTouch線程以合適的時(shí)間間隔循環(huán)運(yùn)行
?確保CapTouch線程的按鍵處理階段,不被其他用戶線程搶占
?確保CapTouch線程的觸摸按鍵測(cè)量階段,其他用戶線程可以運(yùn)行
一些RTOS支持的分析工具
FreeRTOS:SEGGER Systemviewer
Azure ThreadX:TraceX
RT-Thread:SEGGER Systemviewer
SEGGER SystemViewer應(yīng)用示例
CapTouch觸摸按鍵的基本運(yùn)行過程
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351186 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19123瀏覽量
305150 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6822瀏覽量
123331
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論