




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、#1樓主:【原創(chuàng)】ZigBee學習之33osal_start_system()文章發(fā)表于:2010-02-12 17:34 osal_start_system(); /運行系統(tǒng)【OSAL.c】/此函數(shù)是任務系統(tǒng)的主循環(huán)函數(shù),他將輪詢所有任務事件然后調(diào)用相關的任務處理函數(shù),沒有任務時將進入休眠狀態(tài)。void osal_start_system( void )#if !defined ( ZBIT )/雖然搞不清楚這個ZBIT什么東西,不過應該是沒有定義的,如果定義了的話所有函數(shù)只會順序跑下來,跑完這個函數(shù)整個系統(tǒng)就結束了,沒有意義,這里看到這個無限循環(huán)應該就是整個系統(tǒng)的運行方式了 for(;)
2、#endif uint8 idx = 0; Hal_ProcessPoll(); / This replaces MT_SerialPoll() and osal_check_timer()./OSAL調(diào)用此函數(shù)來推送UART,TIMER?!緃al_drivers.c】void Hal_ProcessPoll ()/選取定時器 HalTimerTick();/檢查定時器的計數(shù)溢出【hal_timer.c】void HalTimerTick (void) if (!halTimerRecordHW_TIMER_1.intEnable) halProcessTimer1 ();/處理TIMER1事
3、件void halProcessTimer1 (void) if (halTimerRecordhalTimerRemap(HAL_TIMER_3).channelMode = HAL_TIMER_CH_MODE_OUTPUT_COMPARE)/處理通道模式為輸出比較時的情況 if (T1CTL & T1CTL_CH0IF)/檢查通道0中斷標志看是否達到設定的中斷要求 T1CTL &= (T1CTL_CH0IF);/清除中斷標志 halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_A, HAL_TIMER_CH_MODE_O
4、UTPUT_COMPARE);/給回調(diào)函數(shù)發(fā)送回應void halTimerSendCallBack (uint8 timerId, uint8 channel, uint8 channelMode) uint8 hwtimerid; hwtimerid = halTimerRemap (timerId); if (halTimerRecordhwtimerid.callBackFunc) (halTimerRecordhwtimerid.callBackFunc) (timerId, channel, channelMode); if (T1CTL & T1CTL_CH1IF) T1
5、CTL &= (T1CTL_CH1IF); halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_B, HAL_TIMER_CH_MODE_OUTPUT_COMPARE); if (T1CTL & T1CTL_CH2IF) T1CTL &= (T1CTL_CH2IF); halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_C, HAL_TIMER_CH_MODE_OUTPUT_COMPARE); else if (halTimerRecordhalTimerRema
6、p(HAL_TIMER_3).channelMode = HAL_TIMER_CH_MODE_OVERFLOW) if (T1CTL & T1CTL_OVFIF) T1CTL &= (T1CTL_OVFIF); halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_SINGLE, HAL_TIMER_CH_MODE_OVERFLOW); if (!halTimerRecordHW_TIMER_3.intEnable) halProcessTimer3 (); if (!halTimerRecordHW_TIMER_4.intE
7、nable) halProcessTimer4 (); /* UART的選取*/#if (defined HAL_UART) && (HAL_UART = TRUE) HalUARTPoll();/【hal_uart.c】typedef struct uint8 *rxBuf; uint8 rxHead; uint8 rxTail; uint8 rxMax; uint8 rxCnt; uint8 rxTick; uint8 rxHigh; uint8 *txBuf;#if HAL_UART_BIG_TX_BUF uint16 txHead; uint16 txTail; uin
8、t16 txMax; uint16 txCnt;#else uint8 txHead; uint8 txTail; uint8 txMax; uint8 txCnt;#endif uint8 txTick; uint8 flag; halUARTCBack_t rxCB; uartCfg_t;/UART數(shù)據(jù)結構,這個數(shù)據(jù)結構在文檔中沒有提到,估計是串口緩存區(qū)的配置串口需要掌握的是HalUARTOpen函數(shù)和halUARTCfg_t數(shù)據(jù)結構#endif do if (tasksEventsidx) /輪詢檢查任務 break; while (+idx < tasksCnt); if (id
9、x < tasksCnt) uint16 events; halIntState_t intState; HAL_ENTER_CRITICAL_SECTION(intState); events = tasksEventsidx; tasksEventsidx = 0; / Clear the Events for this task. HAL_EXIT_CRITICAL_SECTION(intState); events = (tasksArridx)( idx, events );/根據(jù)事件的類型執(zhí)行相關的任務處理函數(shù) HAL_ENTER_CRITICAL_SECTION(intState); tasksEventsidx |= events; / Add back unprocessed events to the current task. HAL_EXIT_CRITICAL_SECTION(intState); #if defined( Power_SAVING ) else / Comp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務安全協(xié)議合同范本
- 共同經(jīng)營承包土地合同范本
- 2025年南陽道路運輸貨運考試題庫
- 2025年棗莊年貨運從業(yè)資格證考試題大全
- 包鋼供貨合同范本
- 別墅灌溉維修合同范本
- 倉庫道具租賃合同范本
- 加工車間機床承包合同范本
- 共同做模具合同范本
- 個人售房合同范本
- 14 文言文二則 學弈 教學設計-2024-2025學年語文六年級下冊統(tǒng)編版
- 統(tǒng)編版小學語文六年級下冊第四單元《理想和信念》作業(yè)設計
- 2025年度劇本殺劇本版權授權與收益分成合同
- 2025年春季學期學校工作計劃及安排表
- 2025年一種板式過濾膜裝置項目投資可行性研究分析報告
- BMS基礎知識培訓
- 水刀除銹施工方案
- 英語-廣東省大灣區(qū)2025屆高三第一次模擬試卷和答案
- 2024年06月日照銀行社會招聘筆試歷年參考題庫附帶答案詳解
- 烤房租賃合同范例
- 第一課+追求向上向善的道德【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂(高教版2023·基礎模塊)
評論
0/150
提交評論