久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

淺談ucos 2的信號(hào)量

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2012年01月19日   【字體:

  這2天在已有空就看信號(hào)量,本來(lái)沒(méi)頭緒的,查了資料也沒(méi)找到有用的東西,不過(guò)在例子中找到了感覺(jué)。于是重新把書(shū)那章看了看,然后親自調(diào)試代碼,終于摸到了頭緒。

       首先我很膜拜下大師。首先不說(shuō)這個(gè)操作系統(tǒng)的有多復(fù)雜,大師寫的代碼這么規(guī)范,是我自嘆不如的,大師的代碼層次分明注釋詳細(xì),可以看出大師是個(gè)十分嚴(yán)謹(jǐn)?shù)娜恕>凸膺@點(diǎn)讓人不得不佩服。然后是操作系統(tǒng),雖然大師也是從ucos 2那里學(xué)到得,不過(guò)大師愿意把自己寫的用于51的操作系統(tǒng)分享給大家,這點(diǎn)更加的崇敬。

     現(xiàn)在回到正題,本來(lái)是想理解深透了再寫的,但是怕自己忙著進(jìn)一步的研究,沒(méi)時(shí)間更新這邊的文章。首先信號(hào)量是個(gè)什么?信號(hào)量就象交通燈一樣,它告訴控制了汽車的流動(dòng)。信號(hào)量控制了程序的同步運(yùn)行。誰(shuí)拿到了信號(hào)就可以享用CPU的時(shí)間片,沒(méi)有信號(hào)則任務(wù)被掛起。OSSemCreate 創(chuàng)建信號(hào)量,實(shí)際上是初始化信號(hào)量數(shù)組。OSSemPend()等待一個(gè)信號(hào)量

   這里首先在任務(wù)里初始化信號(hào)量,然后在使用等待信號(hào)量的函數(shù),一旦有信號(hào)量,則立刻返回OS_SEM_OK,取得信號(hào)可以做下一步操作,如果取不到信號(hào),則任務(wù)被掛起,在掛起之前,必須把局部變量存放到堆棧中,這也是書(shū)上說(shuō)的為了保證重入性。    
            SP++;
        *((uint8 data *)SP) = Index; 
上面則把信號(hào)量的索引保存到堆棧中。然后清任務(wù)標(biāo)志再切換到其他任務(wù)中,在這里有必要一提的事,在任務(wù)運(yùn)行中,切到其他任務(wù)中只有幾種方式,1,中斷 2.通過(guò)系統(tǒng)睡眠函數(shù) OSWait() 3.任務(wù)切換函數(shù)OSSched() 。 在OSSemPend()這個(gè)函數(shù)里開(kāi)了臨界區(qū),所以中斷不存在,睡眠函數(shù)也沒(méi)有,那么任務(wù)就一致運(yùn)行直到OSSched() 函數(shù)的出現(xiàn),吧CPU交給其他任務(wù),同時(shí)正在運(yùn)行的任務(wù)由于清掉了就緒的標(biāo)志位,它的恢復(fù)有2種情況  1.超時(shí)時(shí)間到了,中斷吧時(shí)間片切給它繼續(xù)運(yùn)行 2.OSSemPost()它調(diào)用OSSemintPost()會(huì)把等待信號(hào)量的表中吧最高優(yōu)先級(jí)的任務(wù)的就緒表置1,然后切換并給與信號(hào)量,相當(dāng)于等待到信號(hào)量并繼續(xù)未完成的工作。

      時(shí)間不早了,下回更新吧,我睡覺(jué)了。

      雖然頭又點(diǎn)疼,但還是吧文章更新完再說(shuō)吧。好像上面已經(jīng)把信號(hào)量說(shuō)完了。當(dāng)又信號(hào)就OSSemPend會(huì)返回得到信號(hào)的標(biāo)志于是就進(jìn)行對(duì)某個(gè)硬件的處理,如果沒(méi)得到則掛起任務(wù),時(shí)間片留給其他任務(wù),由于清掉了任務(wù)就緒表的標(biāo)志所以掛起的任務(wù)只有等到超時(shí)或者某個(gè)中斷處理中發(fā)送了信號(hào),喚醒等待該信號(hào)量的任務(wù)。  大體就是這樣子。至于調(diào)試嗎,在EN_OS_SEM  宏定義開(kāi)啟,然后就可以使用信號(hào)量的函數(shù)了。你可以設(shè)置個(gè)全局變量,然后在2個(gè)任務(wù)中對(duì)他賦值,然后給他們控制信號(hào)量來(lái)達(dá)到測(cè)試目的。本人寫的代碼還有點(diǎn)問(wèn)題,我掛起的任務(wù)喚醒,發(fā)現(xiàn)PC走錯(cuò)地址了,知道哪有問(wèn)題,但一時(shí)頭疼,無(wú)法繼續(xù)。消息隊(duì)列下回再更新。
 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 久久国产精品一区二区三区 | 午夜丰满少妇一级毛片 | 日本一区二区视频 | 亚洲高清网 | 国产高清精品在线 | 人人干人人玩 | 久久久久久久av | 91porn成人精品 | 免费一区二区三区在线视频 | 久久精品亚洲精品国产欧美 | 日韩国产免费 | 成人欧美日韩一区二区三区 | 欧美日本韩国一区二区 | 日韩三级在线 | 国产一区二区在线免费 | 一区二区久久电影 | 一区二区三区视频在线观看 | 亚洲视频免费在线观看 | 一区二区三区播放 | 成人国产精品色哟哟 | 国产精品一区二 | 黄色片av | 欧美在线a | 天天综合网永久 | 欧美8一10sex性hd | 激情在线视频网站 | 亚洲成人精选 | 亚洲一区二区三区四区五区中文 | 色男人的天堂 | 先锋资源亚洲 | 日本手机在线 | 开操网| 国产欧美精品一区二区三区 | 成人1区2区 | 欧美精品网站 | 亚洲国产精品第一区二区 | 在线国产一区 | 91麻豆精品国产91久久久久久 | 成人在线观看免费观看 | 狠狠干av | 国产精品不卡 |