日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cortex-M3 任务切换函数实例

發布時間:2024/10/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cortex-M3 任务切换函数实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--------------------------------------------- -- 時間:2018-12-09 -- 創建人:Ruo_Xiao -- 郵箱:xclsoftware@163.com ---------------------------------------------

一、聲明

本人在“網易云課堂”報名了李述銅老師的《自己動手從0到1寫嵌入式操作系統》課程,《內核編程實踐》這堂課中講解了任務切換的基本方法。對于核心函數“PendSV_Handler”的自己的理解我將記錄在下面,由于該課程是付費課程,該工程的源碼我覺得不能隨便貼上,故只在這里粘貼必要的“PendSV_Handler”的源碼,以供自己記錄和該課程的學員參考,本人不會將該博客用于商業用途。如若我有侵權行為請告知,我會及時刪除該篇文章。

二、源碼

三、功能

1、該函數的功能是初步理解任務切換的本質,即:保存當前任務所使用的寄存器(R4~R11)的值到內存,中斷或者異常服務例程執行完之后,再恢復中斷或者異常之前任務的寄存器的值,從而繼續執行該任務。

2、第8行~第13行代碼是當前任務所使用的寄存器保存到內存。

3、第16行~第18行代碼,功能是更新棧指針,即:R1。這里的R1相當于SP

四、解釋

1、開始執行該函數時,各個變量的地址及內容如下:

blockPtr? ? ? ? ? ? ? ? ? ?地址:0x2000 0000? ,?內容 : 0x2000 0008

blockPtr->stackPtr? 地址 :0x2000 0008? ,?內容 :0x2000 1018

2、第8行:LDR ? ? R0, =blockPtr

這里blockPtr相當于符號,該代碼的含義是將blockPtr的地址傳給R0,即:R0 = &blockPtr = 0x2000 0000 。

3、第9行:LDR ? ? R0, [R0]

該代碼的含義是R0 = *R0,也就是R0 = R0中的內容,即:R0 = blockPtr = &(bolckPtr->stackPtr)?= 0x2000 0008。

4、第10行:LDR ? ? R0, [R0]

該代碼的含義同上,即:R0 = bolckPtr->stackPtr = &stackBuffer[1024]= 0x20001018。

執行完該句,R0就指向了stackBuffer[1024]

5、第13行:STMDB ? R0!, {R4-R11}

該代碼的含義是將R11~R4的值逐個存儲在stackBuffer[1023]~stackBuffer[1016]中,即:入棧。

過程如下:

R0 = R0 - 4 , 將R11壓入*R0中。

R0 = R0 - 4 , 將R10壓入*R0中。? ?

……

R0 = R0 - 4, , 將R4壓入*R0中。

結果如下:

執行到這里,就完成了將R4~R11入棧的使命。

6、第16行~17行,含義同第8行~第9行。

7、第18行:? ? STR ? ? R0, [R1]

該代碼的含義是將R0的值壓入*R1中,即:bolckPtr->stackPtr?= R0 =?0x20000FF8。

這里0x20000FF8是第13行執行完成之后,R0的值由0x2000 1018 - 0x0000 0020 (4*8的十六進制) =?0x20000FF8。

8、第21~22行,相當于執行是其他任務,任務內容是R4 = R4 + 1,,R5 = R5 + 1。

9、第25行:LDMIA ? R0!, {R4-R11}

R0所執行的內存中的數據依次壓入R4~R11中。

過程如下:

將*R0中的內容壓入R4中,R0 = R0 + 4;

將*R0中的內容壓入R5中,R0 = R0 + 4;?

……

將*R0中的內容壓入R11中,R0 = R0 + 4;

執行完之后,R0中的內容恢復到0x2000 1018,即:指向了stackBuffer[1024]。過程同STMDB相反

10、第28行:BX ? ? ?LR

異常返回。

?

整個函數執行完成之后,實現了保存寄存器入棧,執行其他任務,彈棧恢復寄存器的值,從而完成任務切換功能。

?

?

(SAW:Game Over!)

總結

以上是生活随笔為你收集整理的Cortex-M3 任务切换函数实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 新91av| 亚洲综合二区 | 亚洲一区二区日本 | 国产一区二区三区欧美 | 男人天堂久久 | 伊人成人在线观看 | 欧美天堂一区 | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 精品九九九九 | 亚洲午夜无码久久久久 | 国产小视频网站 | 中文字幕人妻一区二区三区在线视频 | 国产一区二区激情 | 国产精品久久久久永久免费看 | 国产成人精品一区二区三区在线观看 | 久久国产精品久久久 | av毛片大全| 午夜影院在线 | 蜜桃臀一区二区三区 | 精品人妻少妇一区二区三区 | 免费在线看黄色片 | 天天摸日日摸 | 国产精品羞羞答答在线观看 | 五月天色综合 | 亚洲自拍另类 | 成人精品福利视频 | 成人乱人乱一区二区三区一级视频 | 欧美日韩精品 | www.伊人| 亚州av综合色区无码一区 | 欧美激情午夜 | 亚洲人女屁股眼交6 | 日日干夜 | 熟妇高潮一区二区三区 | 国产成人免费电影 | 亚洲第一综合 | 久久1024| 黄色av小说在线观看 | 日韩大片在线观看 | 欧美mv日韩mv国产网站 | 91性视频| 激情无码人妻又粗又大 | 亚洲欧美一区二区视频 | 久久久剧场 | 中文字幕日韩一级 | 国产又色又爽无遮挡免费动态图 | 少妇人妻偷人精品无码视频 | 综合久久久 | 精品999久久久一级毛片 | 日本不卡在线观看 | 白峰美羽在线播放 | 制服av网| 免费看裸体网站视频 | 在线成人观看 | 99re视频这里只有精品 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 国产一区精品无码 | 青春草在线视频观看 | 欧美激情久久久久 | 欧美亚洲一级 | 老女人一毛片 | 人妖粗暴刺激videos呻吟 | 超碰免费在线播放 | 国产熟妇一区二区三区四区 | 丁香激情小说 | 91精品国产综合久 | 黄网站免费观看 | 五月婷婷国产 | 99久视频 | 奇米网888 | 性生交大片免费看视频 | 综合精品在线 | 日韩精品无码一本二本三本色 | 国产欧美一区二区三区另类精品 | 色播综合网 | 国产99久久久久久免费看 | 亚洲偷| 国产免费不卡av | 成人网站在线进入爽爽爽 | 免费观看的黄色网址 | 亚洲一区二区日韩 | 先锋影音一区二区三区 | 欧美久久久一区二区三区 | 成熟丰满熟妇高潮xxxxx视频 | 国产精品外围 | 日韩毛片中文字幕 | 精品成人久久 | 国产精品视频在 | 婷婷综合国产 | 日本大奶子视频 | 羞羞草影院| 高清久久久 | 国产高清免费观看 | 国产一区二区自拍视频 | 丰满雪白极品少妇流白浆 | 麻豆精品在线看 | 国产在线视频你懂得 | 国产精品美女久久久久 | 一本久久久久 |