[第十課] MP3播放器核心運行
『滾石不生苔』"A rolling stone gathers no moss." ~ Publilius Syrus 最後的最後,還是要一提,嵌入式系統的設計,要保持常動,與時俱進。在 ACCP 的 Github Wiki 說道:『ACCP的核心程式採 狀態機 State Machine 架構方式進行: void loop() { switch (state) { case SLEEP: { //enter sleep state... } case SCAN: { //scan tag in the field ...} case PLAYER: { //MP3 player switch(mode) { case 0: { // Album Loop All playing mode; ...} case 1: { // A-B | Single playing mode; ...} case 2: { // Audio Guide mode; ...} case 3: { // BGM playing mode; ...} case 4: { // Playlist playing Mode; ...} case 5: { // Quiz Game Mode; ...} case 6: { // Reserve for Future; ...} ... } case CONFIG: { ... } case NG_ERR: { ... } case NOP: { ... } } } 』。在常動的 Loop() 主程序,一共有 SLEEP 、 SCAN 、 PLAYER 、 CONFIG 、 NG_ERR 與 NOP 等六個狀態;狀態間的轉動並不是循序進行,而是根據每個狀態裡處理程序的結果,來決定下一個要前往的狀態。 在ACCP剛完成開機,會直接先進入 SCAN 狀態,如果沒有感應到有 X-DISC 進入,則會