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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8544|回復: 22
打印 上一主題 下一主題
收起左側

IAR平臺移植TI OSAL到STC8A8K64S4A12單片機中

  [復制鏈接]
跳轉到指定樓層
#
   玩過TI 的ZigBee或者BLE的人,都會接觸到OSAL。OSAL是什么?OSAL英文全稱:operating system abstraction layer(操作系統抽象層)。基于OSAL的調度機制,OSAL支持多任務,而且一個任務內支持多個事件執行。有關OSAL調度機制的實現原理,可以去網上搜索資料。在OSAL下,我們就可以把對數據或者單片的操作轉化成各種任務,各種事件,真正做到有條不紊。和較為復雜UCOS系統比起來,OSAL實現起來比較簡單,其核心也只是做一些任務的輪詢調度。OSAL占用空間3K左右,特別適用51單片機。  我們初玩51單片機,基本上在裸機上跑程序,效率高,實現的功能的比較簡單。但是,對于復雜的功能,就不適合在裸機上跑了,效率不高,而且可能會嚴重限制單片機的運行速度。比如多次檢測多個按鍵,每次消抖處理都要用delay()函數做延時,delay函數本身就挺占用cpu資源。如果還有其他周期性事件要執行,因為delay函數占用cpu資源,同樣會導致周期事件沒法在規定的時間內執行。所以還是很有必要跑系統,再在系統的平臺上運行我們的應用程序。
  本文簡要介紹OSAL的在STC8A8K64S4A12移植的過程,并且以幾個任務事件做測試。本工程文件也會上傳到附件中,需要的可以去下載。
一、移植OSAL所需主要文件


OSAL.c這個文件主要有事件創建和刪除、就緒任務輪詢、消息創建和任務創建初始化等;OSAL_ClockBLE.c這個文件主要有系統任務事件時間更新、日期的轉化、日期的初始化等;OSLA_Memory.c這個文件主要是一些內存的管理、OSAL堆空間的分配等;OSAL_Timer.c這個文件主要是事件定時執行、事件終止等。
二、移植關鍵部分
1、數據類型的定義


數據類型的定義需要根據不同單片機的數據類型長度來定義,本文是根據STC8A8K64S4A12的數據長度的定義數據類型。如果不清楚自己的單片機的數據類型的長度,可以用sizeof()函數得到數據類型長度,比如sizeof(int)。
2、OSAL時間更新


這個函數里面調用到兩個函數,osalTimerUpdate(1)主要是讓系統的時基增加1ms,要求每次過了1ms都要調用這條函數,事件的定時執行的時間計算都是基于這個累計的時基;osalClockUpdate(1)這個函數主要是累計1ms的時間,方便把時間轉化為年月日。我這邊是使用STC8A8K64S4A12的定時器0外設產生1ms的定時器0中斷,然后把void osalTimeUpdate(void函數要放在定時器0中斷處理函數中,這樣每次產生中斷,就會更新1ms的時基。


3、中斷臨界保護


OSAL在對內存的管理和任務的輪詢等關鍵操作需要先關閉系統總中斷,操作完后,再把系統總中斷打開。OSAL在多個地方都有使用到中斷臨界保護,可以保護關鍵操作時數據不被外部中斷干擾。查詢到STC8A8K64S4A12對系統總中斷真正的開啟和關閉需要執行EA=0/EA=1后再延長1-2個指令周期,所以加上兩條asm("nop")語句,確保系統總中斷絕對的關閉或者打開。
三、OSAL的使用
1、main()函數


  main函數就只需要包含四條語句,十分簡潔。其中定時器0初始化,產生1ms的中斷,更新系統時基;初始化系統任務,開啟系統總中斷,啟動任務輪詢。然后系統就能跑起來了。
2、OSAL啟動系統


從for循環語句知道,死循環執行osal_run_system()函數。這個函數主要是不停地輪詢哪些任務就緒,然后執行就緒任務。
3、用戶自定義任務


tasksAtrr[]這個是存放用戶自定義應用任務的數組,這里只定義一個應用任務。可以自定義多個自定義任務,任務輪詢就是查詢這個數組里面任務有哪些事件需要執行。
4、系統初始化


這里是做一些應用的初始化,在初始化函數里面,用戶可以設置哪些事件執行。
5、任務事件處理


上面的圖片就是任務里面的事件,任務在被輪詢的時候,就會查詢哪些事件就緒,一旦某個事件就緒,就去執行對應事件處理,處理完后,會清除對應事件就緒標志,確保對應事件不會被重復執行。下面的圖片是事件位域的定義,一個任務支持定義16個事件。
6、幾事件設置的函數

7、OSAL堆空間大小設置


INT_HEAP_LEN是OSAL運行的堆空間設置,這里設置為1024,如果用戶的任務和事件比較多的話,就要適當加大對空間的大小。
四、任務事件執行演示
   



采用外部中斷來實現按鍵中斷,再設置20ms按鍵消抖檢測事件,一旦按鍵有效,就定時啟動6個事件,事件的處理就是讓特定的GPIO口電平反轉。按下按鍵后,從邏輯分析儀,可以清楚地看到6個事件的執行過程,看起像是并行處理事件,其實是串行處理事件的。


再次按下按鍵后,所以事件都被停止了。再次按下后,事件有開始執行了,交替按下按鍵,再用邏輯分析儀查看。

工程全部文件

實物圖


全部資料51hei下載地址:
STC8A8K64S4A12.rar (502.18 KB, 下載次數: 596)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂 踩
回復

使用道具 舉報

22#
ID:619805 發表于 2022-6-18 10:37 | 只看該作者
沒有你 發表于 2019-11-14 09:37
IAR工程缺少STC的環境,你可以看我之前發的帖子:在IAR平臺建立STC8ASK64S4A12單片機工程。然后就可以編 ...

請問iar中devices文件夾中的文件怎么打開編輯,我想把我使用的stc12c5a60s2加入iar中怎么做?
回復

使用道具 舉報

21#
ID:514317 發表于 2022-3-26 12:02 | 只看該作者
哪位高手幫忙移植個keil工程啊
回復

使用道具 舉報

20#
ID:290373 發表于 2021-12-17 10:28 | 只看該作者
長見識了,感謝分享
回復

使用道具 舉報

19#
ID:646277 發表于 2021-5-5 13:28 | 只看該作者
高手,一直想移植,但沒有成功
回復

使用道具 舉報

18#
ID:351097 發表于 2020-3-14 21:16 | 只看該作者
race_start 發表于 2020-3-9 00:29
樓主的分享真心不錯,我以前也用過CC2540  CC2541,里面的OSAL真心不錯的,用在8位的51上挺合適的。不過用I ...

感謝支持
回復

使用道具 舉報

17#
ID:704910 發表于 2020-3-9 00:29 | 只看該作者
樓主的分享真心不錯,我以前也用過CC2540  CC2541,里面的OSAL真心不錯的,用在8位的51上挺合適的。不過用IAR來開發STC我還真沒用過!!不過謝謝樓主分享的資源了!!
回復

使用道具 舉報

16#
ID:564182 發表于 2020-2-27 16:45 來自手機 | 只看該作者
讀按鍵不一點要用delay,開個20ms定時器去讀in就好啦。或者rtos定時任務執行。
回復

使用道具 舉報

15#
ID:696952 發表于 2020-2-23 15:13 | 只看該作者
有什么作用?詳細介紹一下唄
回復

使用道具 舉報

14#
ID:351097 發表于 2020-1-3 21:36 | 只看該作者
xizhe2005 發表于 2020-1-3 16:28
樓主好人做到底,能不能做出KEIL工程供大家直接使用

暫時沒有搞keil工程,你自己復制一下osal的幾個文件到keil工程里面,osal詳細的移植過程,帖子說得很清楚了。
回復

使用道具 舉報

13#
ID:117433 發表于 2020-1-3 16:28 | 只看該作者
樓主好人做到底,能不能做出KEIL工程供大家直接使用
回復

使用道具 舉報

12#
ID:20672 發表于 2020-1-2 16:55 | 只看該作者
沒有你 發表于 2020-1-2 11:36
沒有,你自己把osal的幾個文件移植到keil工程里面,再做一下數據類型的兼容就行。

好的多謝~~~~
回復

使用道具 舉報

11#
ID:351097 發表于 2020-1-2 11:36 | 只看該作者
wdliming 發表于 2020-1-1 09:18
請問有keil的工程嗎??

沒有,你自己把osal的幾個文件移植到keil工程里面,再做一下數據類型的兼容就行。
回復

使用道具 舉報

10#
ID:20672 發表于 2020-1-1 09:18 | 只看該作者
請問有keil的工程嗎??
回復

使用道具 舉報

9#
ID:645651 發表于 2019-11-20 11:20 | 只看該作者
單片機就是缺少系統,osal確實方便
回復

使用道具 舉報

8#
ID:351097 發表于 2019-11-14 09:37 | 只看該作者
xizhe2009 發表于 2019-11-13 15:09
下載的東西看不了,裝了IAR也看不了,還有過程沒說清楚,STC是用UART下載程序的,IAR是用可以調試的那種JTA ...

IAR工程缺少STC的環境,你可以看我之前發的帖子:在IAR平臺建立STC8ASK64S4A12單片機工程。然后就可以編譯我的工程了,編譯成功后,有產生hex文件,你用stc-isp軟件把hex文件燒錄到STC單片機就行,IAR不支持STC單片機在線調試。
回復

使用道具 舉報

7#
ID:639647 發表于 2019-11-13 15:09 | 只看該作者
下載的東西看不了,裝了IAR也看不了,還有過程沒說清楚,STC是用UART下載程序的,IAR是用可以調試的那種JTAG接口,到底怎么把程序下載到STC單片機上呢,能不能說詳細點
回復

使用道具 舉報

6#
ID:351097 發表于 2019-11-11 23:14 | 只看該作者
xizhe2005 發表于 2019-11-11 09:10
學喜了,可是我,這是不是從ZSTACK上下的

我用過CC2541,感覺OSAL挺適合8位單片機的,就做了移植。
回復

使用道具 舉報

5#
ID:117433 發表于 2019-11-11 09:10 | 只看該作者
學喜了,可是我,這是不是從ZSTACK上下的
回復

使用道具 舉報

地板
ID:117433 發表于 2019-11-7 15:10 | 只看該作者
我以前學過ZIGBEE,由于覺得ZIGBEE傳輸太近,就放棄了,改用LORA,單片機用STC的,自己編確實漏洞太多,,所以就嘗試操作系統
回復

使用道具 舉報

板凳
ID:599571 發表于 2019-9-29 02:37 | 只看該作者
這是個很好的思路,謝謝分享
回復

使用道具 舉報

沙發
ID:371527 發表于 2019-9-26 11:50 | 只看該作者
謝謝!試試
回復

使用道具 舉報

樓主
ID:20672 發表于 2019-9-11 21:27 | 只看該作者
謝謝分享~~~~好資料,51黑有你更精彩!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费网站国产 | 在线一区二区三区 | 国产亚洲第一页 | 一级黄a视频 | 青青草一区二区三区 | av在线免费观看网站 | 在线成人av | www.久久久久久久久 | 久久久精品一区 | 永久精品 | 极品国产视频 | 一级欧美一级日韩片免费观看 | 亚洲国产成人精品久久久国产成人一区 | 久草在线青青草 | 天天综合网天天综合 | 国产黑丝av| 欧美a级成人淫片免费看 | 亚洲精品日韩欧美 | 国产精品色婷婷久久58 | 九九九视频 | 81精品国产乱码久久久久久 | 日韩小视频在线 | 成人网在线 | 国产福利在线播放 | 久久久国产精品网站 | 亚洲国产第一页 | 欧美日韩视频在线 | 一区二区三区四区不卡 | 免费精品 | 国产情侣激情 | 中文字幕久久精品 | 日本一区不卡 | 伊人超碰 | 国产免费一区二区 | 一级毛片视频 | 久久99深爱久久99精品 | 国内精品视频一区二区三区 | 国产一区二区三区四区五区3d | 亚洲欧美在线观看 | 自拍偷拍第1页 | 日韩在线一区二区三区 |