[導讀]所以多任務是與時間有關系的,還是用人來作比喻,例如你可一天內做多件工作,包括上班、吃飯、拉屎:),但有半秒內你能做這么多工作嗎?
對于新手,有些看不明白,經(jīng)過查資料,簡單說一下自己的理解。
什么是多任務?
不論PC還是MCU,從微觀上看,是沒有真正的多任務的,就象人做工作一樣,不能同一時刻(不是同一時間)做多件工作。
所以多任務是與時間有關系的,還是用人來作比喻,例如你可一天內做多件工作,包括上班、吃飯、拉屎:),但有半秒內你能做這么多工作嗎?MCU也一樣,但它就快很多,例如1ms內MCU只做一件任務,但1s內就可做多個任務。這就是所謂的多任務了。
那么MCU多任務的實現(xiàn)就是這樣:在某時刻只做一個任務,但在一段時間內可做多個任務。
舉個實例:顯示4個8字的LED數(shù)碼管。
傳統(tǒng)做法是,做個LcdDisplay()函數(shù),在這個函數(shù)內把要顯示的內容全部顯示出來,也就是從頭到尾顯示這4個數(shù)碼管。
多任務的做法,做個LcdUpdate()函數(shù),在這個函數(shù)內只顯示一位數(shù)碼管,然后退出。這個函數(shù)由一個管理程序調用,例如每10ms調用一次,第一次顯示第一個8字,第二次顯示第二個8字....。
如果LcdUpdate()只花2ms,那么10-2=8ms,這8ms可做其他事。
以上顯示的時間數(shù)值僅作例子,沒什么實際意義。
一點膚淺理解,不知正確與否,新手看了不要被誤導,高手看了請指出不正確之處。
什么是多任務?
不論PC還是MCU,從微觀上看,是沒有真正的多任務的,就象人做工作一樣,不能同一時刻(不是同一時間)做多件工作。
所以多任務是與時間有關系的,還是用人來作比喻,例如你可一天內做多件工作,包括上班、吃飯、拉屎:),但有半秒內你能做這么多工作嗎?MCU也一樣,但它就快很多,例如1ms內MCU只做一件任務,但1s內就可做多個任務。這就是所謂的多任務了。
那么MCU多任務的實現(xiàn)就是這樣:在某時刻只做一個任務,但在一段時間內可做多個任務。
舉個實例:顯示4個8字的LED數(shù)碼管。
傳統(tǒng)做法是,做個LcdDisplay()函數(shù),在這個函數(shù)內把要顯示的內容全部顯示出來,也就是從頭到尾顯示這4個數(shù)碼管。
多任務的做法,做個LcdUpdate()函數(shù),在這個函數(shù)內只顯示一位數(shù)碼管,然后退出。這個函數(shù)由一個管理程序調用,例如每10ms調用一次,第一次顯示第一個8字,第二次顯示第二個8字....。
如果LcdUpdate()只花2ms,那么10-2=8ms,這8ms可做其他事。
以上顯示的時間數(shù)值僅作例子,沒什么實際意義。
一點膚淺理解,不知正確與否,新手看了不要被誤導,高手看了請指出不正確之處。





