欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

自己做單片機實時操作系統1前言

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年01月30日   【字體:

操作系統在之前對于我自己還說一直是一個很陌生的東西,不知道該如何的理解和定義。終于當完成某些比較繁瑣的項目時,發現多任務的操作系統是一個很好的東西。
之前總是在看著別人怎么去實現一個操作系統,最終有了自己去寫一個的想法。按照ucOS的作者說的一樣,操作系統最終就是一個保護寄存器和恢復寄存器的動作。

手上只有一個MCU飛思卡爾DG128的開發板,然后就開始寫代碼吧。當然要先練習一下自己的C 語言啦。

1、理解一下函數指針先。
我們知道每一個函數都有自己的一個指針
void ProcFun1(void)
那么ProcFun1就是一個指針。
如下面一個我測試的程序:

typedef void(*VOID_FUN_PTR)(void); 定義一個void*的類型
void DelayTime(int duty)
{
 while(duty--)
 {
  _FEED_COP(); /* feeds the dog */
 };
}


void FunTask1(void) {
int i;
 for(i = 0;i < 8;i++)
 {
   PTP = 1<<i;     //這個實在LED上顯示個流水燈。
  DelayTime(50000);
 }
}
void main(void) {
  /* put your own code here */
  VOID_FUN_PTR pFun;    創建一個局部函數指針
 InitSystem();
 EnableInterrupts;
 pFun = FunTask1;       對指針進行一個賦值
  for(;;) {
    _FEED_COP(); /* feeds the dog */
 (pFun)();            執行funtask1,取地址,然后通過()執行函數。就可以執行到制定位置的一個函數了。
  } /* loop forever */
  /* please make sure that you never leave main */
}
到這里就知道函數指針一個怎么去用了。下一步就是棧是怎么保護和恢復的的。

編輯原因--修改函數指針的理解

關閉窗口

相關文章