51微控制器時間片查詢

2021-08-19 18:45:31 字數 904 閱讀 5945

時間片輪詢方法

方法一:

[cpp] 

view plain

copy

void

timerx_handler(

void

)    

初始化設定該定時器x毫秒中斷一次,即ms_cnt作為乙個毫秒計時器。

[cpp] 

view plain

copy

main(

void

)    

if(ms_cnt%y==0)  

}  }  主迴圈中,每隔x毫秒執行一次task1,每隔y毫秒執行一次task2。

方法二:

[cpp] 

view plain

copy

typedef

_task_struct  

task;  

task task1 = ;  

task task2 = ;  

定義任務結構體,每隔x時間置位task1執行標誌位task1.run_flag,在main loop中掃瞄並執行;同理task2。

[cpp] 

view plain

copy

void

timerx_handler(

void

)    

if(task1.time_cnt == 0)  

if(task2.run_flag == 0)  

if(task2.time_cnt == 0)  

}  [cpp] 

view plain

copy

void

main(

void

)    

if(task2.run_flag == 1)  

}  }  

51微控制器 時鐘

1.時鐘週期是機器週期的12倍 機器週期是晶振頻率的倒數 2.51微控制器1個機器週期 12個時鐘週期,頻率為12mhz,則乙個機器週期為1us,具體到定時器程式就是,假如你想定1ms,那麼微控制器每次加乙個一,就要過1us,那麼1ms就要加1000次,所以用65535 1000 64535 再把6...

微控制器 51微控制器時鐘 利用中斷

include include delay delay.h define timeport p0 sbit bit select p2 0 sbit seg select p2 1 sbit key1 p2 2 sbit key2 p2 3 code unsigned char timedata 1...

微控制器時鐘管理

本章節談一下對微控制器時鐘管理上的一些認識,假如說我們拿到一款stm32f103c8t6的微控制器,設定的是外部晶振8m,然後設定分頻為不分頻,那麼執行時鐘就是72m,就是執行乙個指令週期的時間為1 72m,通過乙個指令的執行時間,我們算出了非常簡單的延時函式,比如 簡單的延時函式 void del...