OsalTimerScheduler 採 round-robin 設計, 並沒有偏重於哪一個 timerId. 它以 TIMER ISR 為主, 然而 Timer Callback 函數並不是由 ISR 呼叫, 而是由 Main 主程序 呼叫; Timer ISR 只是做 ++ -- 之類的. 套用這樣的架構, 程式設計師可以專注於 Timer Callback 函數的設計. 以本案例而言, 專注於 ProbeTimer() / CalibTimer() / InitWeightTimer() / SetWeightLevel() 等等Callback 函數的實做. 這樣的設計已經有一點兒接近 `微作業系統` (Tiny OS) 的概念了. 本篇文章介紹的 code 是經過驗證的.
目前分類:微處理器 (2)
- Apr 02 Sat 2016 21:53
■ 好用的 OSALTimerScheduler
- May 21 Sat 2016 19:36
■ STM32 Discovery 上的鍵盤掃描,蜂鳴器,風扇,緊急停止,心跳
這篇文章的主旨其實在說明 OsalTimerScheduler 的應用, 只不過 MCU 換成了 STM32 Discovery 開發板. 如果讀者還沒閱讀過 "好用的 OSALTimerScheduler" 這篇文章, 麻煩情您先閱讀. 因為本篇文章是基於 OsalTimerScheduler. 在開始之前, 麻煩你先至 ST 官方網站下載 STM32 Discovery 的 DEMO Source Code , 好像叫做 StmSnippets 吧, 我不確定. 裡面有 ADC, CLOCK, DAC, CAN, DBG, DMA, ExternalIT, FLASH, GPIO, HDMI, I2C, IRTIM, IWDG, OPTION_BYTES, RTC, SPI, TIMERS, TSC, USART, WWDG 各式各樣的 DEMO source code. 本篇文章使用的是 Timer 資料夾裡面的第二項 "02_UpcounterOnEach2RisingEdgesOnETR", 直接修改開發的. 話不多說, 我們直接先來看 鍵盤掃描.