找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9502|回復(fù): 28
收起左側(cè)

原創(chuàng):在IAR平臺建立STC8ASK64S4A12單片機工程

  [復(fù)制鏈接]
ID:351097 發(fā)表于 2019-8-17 12:16 | 顯示全部樓層 |閱讀模式
    一般我們使用STC單片機都是基于老舊的KEIL v4.0平臺,STC官方給的頭文件也是只支持keil v4.0平臺。我們?nèi)绻谄渌脚_比如IAR上開發(fā)STC8ASK64S4A12,就沒法實現(xiàn),網(wǎng)上也沒有人做過類似的事情。市面上有不少熱門的單片機,比如STM32系列單片機不僅支持keil v5.0平臺,而且支持IAR平臺,這將對開發(fā)者是非常便利的,不同開發(fā)平臺有不同的優(yōu)點。   為了實現(xiàn)在IAR平臺開發(fā)STC8ASK64S4A12單片機,自己花了幾天時間重寫了兼容IAR平臺的頭文件、鏈接文件、配置文件,然后在IAR平臺成功實現(xiàn)建立STC8ASK64S4A12工程,并且調(diào)試成功通過。接下來詳細說明如何在IAR平臺建立STC8ASK64S4A12工程。
一、準備工作
1、安裝IAR for 8051 10.10.1版本;
2、在IAR設(shè)備添加STC單片機類型;
  將附錄文件夾devices下的STC文件夾復(fù)制到IAR安裝的目錄D:\IAR_8051_10\8051\config\devices中。
3、在IAR添加STC單片機頭文件;
  將附錄文件夾STC頭文件下的ioSTC8.h和ioSTC89xxxx.h復(fù)制到IAR目錄D:\IAR_8051_10\8051\inc中。
單片機類型和頭文件都在附件上有,IAR for 8051 10.10.1軟件需要自己去下載安裝。
二、建立新工程
下面有圖文并茂簡介在IAR for 8051上建立STC8ASK64S4A12工程的詳細過程。我會把自己的工程上傳附錄文件中。
1、選擇菜單project下Create New Project,然后選擇Empty project。

1

1


2、選擇左邊的工程,右鍵選中OPTION,在窗口選中General Option下Target的Device那一欄,選擇右邊的小圖標

2

2


3、選中添加好的STC單片,STC8A8K64S4A12。如果找不到STC單片機,需要重新查看準備工作的部分有沒有做好

3

3


4、在Tgrget中,Data model選中l(wèi)arge,calling convertion選擇XDATA stack reetrant。

4

4


5、在Library Configuration中,Library選擇CLIB

5

5


6、Linker中勾選圖示的選型。
6.png
7、勾選圖示選型,這樣才會生成hex文件。

7

7

8、選擇菜單project中Edit Configuration,新建一個基于debug的工程,命名為:STC8A8S64S4A12

8

8

9、添加頭文件的目錄,這個是我自己工程的頭文件目錄
$PROJ_DIR$\代表工程的目錄    $PROJ_DIR$\..\..\Components\board\include代表工程的上一級,再上級一級目錄Components下board下include文件夾,一般頭文件放在include文件夾內(nèi)。

9

9

10、程序優(yōu)化等級一般選擇Medium,如果選擇high會有不少無關(guān)變量被IAR全部優(yōu)化掉,代碼所占空間達到最小化,但是調(diào)試可能有問題。如果不想某個變量被優(yōu)化,需要要在變量前加上volatile。

10

10

11、這是自己建立工程,利用DS18B20測量溫度,并且通過printf函數(shù)打印出來。

11

11

12、編譯后將hex文件燒錄到STC8A8K64S4A12單片機里,再用串口打印工具,打印測量溫度數(shù)據(jù)

12

12

三、IAR平臺的優(yōu)勢
IAR平臺對程序的編譯效率比較高,編譯所花時間比較少,另外IAR平臺還有一個高級的代碼分析工具:C-STAT Static Analysis,這個工具不同于編譯器,它會分析代碼潛在的隱患。比如你用malloc函數(shù)申請空間,如果沒有對申請的指針做NULL判斷,就用警告,但是如果直接用編譯器編譯,是沒有這個警告的。這就是這個工具高級的地方,它可以讓工程師完善代碼,減少隱患。這個是keil v4.0沒有的功能。
1、選擇C-STAT Static Analysis中Analysis Project

3.1

3.1

2、分析結(jié)果,用malloc()有隱患

3.2

3.2

3、最后對pBUF指針做非空判斷,再分析,就沒有警告了

3.3

3.3


四、STC單片機在IAR平臺的不足點
1、雖然IAR平臺支持多種燒錄器,但是沒有基于IAR平臺的STC單片機在線仿真工具和在線燒錄器,程序燒錄還是要用STC官方給的STC-ISP燒錄程序。這種情況下,調(diào)試程序一般用printf函數(shù)外加串口來監(jiān)控程序運行狀態(tài)。
五、后記
本人也是從接觸STC單片機入門的,STC給單片機初學(xué)者提供一個良好的學(xué)習(xí)平臺,我這次的移植,也是希望能夠多一個編譯平臺玩STC單片機,不再局限于keil平臺。不同平臺移植不容易,希望能得到大家的支持,共同完善。

全部資料51hei下載地址:

IAR平臺建立工程準備文件.rar

34.59 KB, 下載次數(shù): 568, 下載積分: 黑幣 -5

準備文件

STC8A8K64S4A12.rar

226.62 KB, 下載次數(shù): 376, 下載積分: 黑幣 -5

圖示例子工程文件

圖片文件.rar

732.66 KB, 下載次數(shù): 239, 下載積分: 黑幣 -5

如果看不到圖片,就看圖片附件,序號對應(yīng)好了

評分

參與人數(shù) 3黑幣 +110 收起 理由
digger + 30 絕世好帖!
kaier1234 + 30 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:282095 發(fā)表于 2019-8-18 09:03 | 顯示全部樓層
感覺還是蠻不錯的
回復(fù)

使用道具 舉報

ID:351097 發(fā)表于 2019-8-18 13:42 | 顯示全部樓層

多謝支持
回復(fù)

使用道具 舉報

ID:43342 發(fā)表于 2019-10-2 17:28 | 顯示全部樓層
謝謝樓主!
回復(fù)

使用道具 舉報

ID:111683 發(fā)表于 2019-11-3 02:27 | 顯示全部樓層
我剛剛從keil過來,兩個平臺不知道哪個好用
回復(fù)

使用道具 舉報

ID:71535 發(fā)表于 2019-11-3 12:55 | 顯示全部樓層
頂一下,個人感覺IAR比keil速度快些,用著順手。
回復(fù)

使用道具 舉報

ID:645651 發(fā)表于 2019-11-20 11:17 | 顯示全部樓層
stc官方要是支持IAR就方便了
回復(fù)

使用道具 舉報

ID:645651 發(fā)表于 2019-11-20 11:18 | 顯示全部樓層
支持原創(chuàng),回頭試試看
回復(fù)

使用道具 舉報

ID:20672 發(fā)表于 2019-11-23 13:28 | 顯示全部樓層
謝謝分享~~
回復(fù)

使用道具 舉報

ID:20672 發(fā)表于 2019-11-23 16:30 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:248089 發(fā)表于 2019-12-1 14:23 | 顯示全部樓層
謝謝分享~~~
回復(fù)

使用道具 舉報

ID:171776 發(fā)表于 2019-12-9 17:07 | 顯示全部樓層
必須點贊,給予了莫大的幫助
回復(fù)

使用道具 舉報

ID:351097 發(fā)表于 2019-12-12 10:39 | 顯示全部樓層
剛才自己重新下載了一下準備文件,編譯不通過,發(fā)現(xiàn)是頭文件被修改過,我是在8月17日寫這篇文章順便上傳的附件。頭文件在9月5號被修改成keil原版的,所以導(dǎo)致不支持IAR的編譯。我希望審核員不要隨便修改附件的內(nèi)容,如果修改了,麻煩告知一下!
回復(fù)

使用道具 舉報

ID:619556 發(fā)表于 2020-4-10 16:41 | 顯示全部樓層
真心感謝。樓主厲害,剛剛學(xué)51單片機,什么都不會,慢慢學(xué)習(xí)了
回復(fù)

使用道具 舉報

ID:299626 發(fā)表于 2020-10-19 19:36 | 顯示全部樓層
很好的參考資料
回復(fù)

使用道具 舉報

ID:853998 發(fā)表于 2020-12-3 20:22 | 顯示全部樓層
看到你的  dff文件都是空白的,但是其他單片機的dll文件是大概這樣的:

;; IO Register definitions
;; Format:   tag = "NAME", "zone name", address, size in bytes, base, opt bit range
[Sfr]

;; USART0 group
;; ------------------------------------------------------------
sfr = "U0DBUF",            "SFR", C1, 1, base=16
sfr = "U0BAUD",            "SFR", C2, 1, base=16
sfr = "U0UCR",             "SFR", C4, 1, base=16
sfr = "U0UCR.FLUSH",       "SFR", C4, 1, base=16, bitRange=7
sfr = "U0UCR.FLOW",        "SFR", C4, 1, base=16, bitRange=6
sfr = "U0UCR.D9",          "SFR", C4, 1, base=16, bitRange=5
sfr = "U0UCR.BIT9",        "SFR", C4, 1, base=16, bitRange=4
sfr = "U0UCR.PARITY",      "SFR", C4, 1, base=16, bitRange=3
sfr = "U0UCR.SPB",         "SFR", C4, 1, base=16, bitRange=2
sfr = "U0UCR.STOP",        "SFR", C4, 1, base=16, bitRange=1
sfr = "U0UCR.START",       "SFR", C4, 1, base=16, bitRange=0
sfr = "U0GCR",             "SFR", C5, 1, base=16
sfr = "U0GCR.CPOL",        "SFR", C5, 1, base=16, bitRange=7


這個ddf文件您知道是起什么作用的嗎?
回復(fù)

使用道具 舉報

ID:853998 發(fā)表于 2020-12-7 15:54 | 顯示全部樓層
沒有你 發(fā)表于 2019-12-12 10:39
剛才自己重新下載了一下準備文件,編譯不通過,發(fā)現(xiàn)是頭文件被修改過,我是在8月17日寫這篇文章順便上傳的 ...

如果這樣的話,如何判斷我下載的頭文件是能用的還是不能用的?
回復(fù)

使用道具 舉報

ID:351097 發(fā)表于 2020-12-15 20:17 | 顯示全部樓層
lee8871 發(fā)表于 2020-12-7 15:54
如果這樣的話,如何判斷我下載的頭文件是能用的還是不能用的?

可以下載這個帖子的IAR工程,http://www.torrancerestoration.com/bbs/dpj-180611-1.html
回復(fù)

使用道具 舉報

ID:351097 發(fā)表于 2020-12-15 20:18 | 顯示全部樓層
lee8871 發(fā)表于 2020-12-3 20:22
看到你的  dff文件都是空白的,但是其他單片機的dll文件是大概這樣的:

;; IO Register definitions

ddf是硬件描述文件。你可以參考帖子http://www.torrancerestoration.com/bbs/dpj-181912-1.html
回復(fù)

使用道具 舉報

ID:149505 發(fā)表于 2021-3-2 23:02 | 顯示全部樓層
樓主 我用“原創(chuàng):0.96寸單色OLED繪制電子鐘表盤的實現(xiàn)”里的“IAR平臺STC兼容文件”放到IAR 8051 8.10.3里后編譯提示“Warning[Pe618]: struct or union declares no named members C:\WorkTool\IAR Systems\Embedded Workbench 6.0 Evaluation\8051\inc\ioSTC8.h xxx”這影響編譯么?
警告.PNG

回復(fù)

使用道具 舉報

ID:102963 發(fā)表于 2021-3-5 23:19 | 顯示全部樓層
感覺海水Keil好用,這個IAR用著感覺亂七八糟的。
回復(fù)

使用道具 舉報

ID:106977 發(fā)表于 2021-3-7 16:31 | 顯示全部樓層
Keil平臺加上STC的驅(qū)動,通過串口調(diào)試很方便了。資深開發(fā)者可玩玩其它開發(fā)平臺。初學(xué)者建議還是用Keil好。
回復(fù)

使用道具 舉報

ID:149505 發(fā)表于 2021-5-28 15:51 | 顯示全部樓層
moneng 發(fā)表于 2021-3-2 23:02
樓主 我用“原創(chuàng):0.96寸單色OLED繪制電子鐘表盤的實現(xiàn)”里的“IAR平臺STC兼容文件”放到IAR 8051 8.10.3里 ...

ioSTC8(2021年05月28日15時49分46秒).rar (3.72 KB, 下載次數(shù): 7)
適用于Embedded Workbench 6.0 Evaluation 8051 8.10.3的STC8單片機編譯
回復(fù)

使用道具 舉報

ID:1094236 發(fā)表于 2023-9-22 10:39 | 顯示全部樓層
謝謝樓主慷慨分享,這也太方便了
回復(fù)

使用道具 舉報

ID:1101997 發(fā)表于 2023-12-2 08:45 | 顯示全部樓層
不是使用C++的話,就編譯效率來說IAR不如KEIL,但對于大的工程明顯C++代碼更好組織一些。
回復(fù)

使用道具 舉報

ID:106977 發(fā)表于 2023-12-3 00:28 | 顯示全部樓層
有多余精力去折騰,Keil已經(jīng)習(xí)慣,也很方便,沒覺得有啥毛!STC官方開發(fā)的輔助軟件、聯(lián)機調(diào)試都是基于Keil。其它平臺缺乏生態(tài),仔細想一想看值不值?
回復(fù)

使用道具 舉報

ID:192623 發(fā)表于 2023-12-3 16:52 | 顯示全部樓層
沒有意義, 本身IAR編輯器就不是很好
回復(fù)

使用道具 舉報

ID:1130826 發(fā)表于 2024-8-22 22:57 | 顯示全部樓層
謝謝lz!剛想轉(zhuǎn)到IAR就看到lz的帖子
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表