CMSIS-DAP - 3 - timer


收錄於 : 關於Ameba的一百篇

前篇 :  CMSIS-DAP -2 -RTOS


程式 : github cmsis-dap exam3



說明 : 

我們把主架構都起來. 其實他是用一個主線程, 透過 IPC event trigger 的架構方式來做. 




1. main.c : main_task



(1) os_tsk_create_user : 建立另一個 timer thread
(2) os_evt_wait_for : 等待 signal 
(3) os_evt_get : 看收到的 signal 是什麼, 坐相對應的事. 

2. timer_task




(1) os_itv_set(50) : 設定 task 等待時間

    其實他並不是真的用 HW timer, 而是利用 rt_block, os scheduling 去等待一段時間

   設 50 其實是 500ms , 這是因為 systick interrupt 用的 time interval (os_trv) 是 10ms 

設定在 src/rtos/RTX_Conf_CM.c : ( 這檔名將來還是得修正一下)

  PS: 如之前所提, 需計算不要讓 os_trv 設到 systick 時爆掉了 (設太長)
         這方式加個 timer, 可以讓整個系統運作的時間刻度再放大




(2) os_itv_wait() : 等待 時間到

(3) os_evt_set() : 按不同時間送 signal 給 main task

PS1: 的確應該改成 CMSIS-RTOS 的 API, 下回來修正一下. 否則 API 不統一, 上層程式 和 文件都需要改



PS2: 這些 os API 都是用 SVC 方式,  詳述在 下一篇 : CMSIS-DAP -4 - SVC


===

結果 : 



==

Future:

 usb stack :
    
         1. usb -> uart

             (1) 先 直接 output message

             (2) 將 Ameba 的 log uart 轉向

         2. usb disk

             (1) 產生一個虛擬 disk

             (2) JWD  與 Ameba 溝通

             (3)  with Ameba flash writing

          3. debug

             (1) CMSIS-DSP

             (2) OpenOCD - gdb

留言

熱門文章