找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7368|回复: 27
打印 上一主题 下一主题
收起左侧

原创:在IAR平台建立STC8ASK64S4A12单片机工程

  [复制链接]
跳转到指定楼层
楼主
ID:351097 发表于 2019-8-17 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一般我们使用STC单片机都是基于老旧的KEIL v4.0平台,STC官方给的头文件也是只支持keil v4.0平台。我们如果要在其他平台比如IAR上开发STC8ASK64S4A12,就没法实现,网上也没有人做过类似的事情。市面上有不少热门的单片机,比如STM32系列单片机不仅支持keil v5.0平台,而且支持IAR平台,这将对开发者是非常便利的,不同开发平台有不同的优点。   为了实现在IAR平台开发STC8ASK64S4A12单片机,自己花了几天时间重写了兼容IAR平台的头文件、链接文件、配置文件,然后在IAR平台成功实现建立STC8ASK64S4A12工程,并且调试成功通过。接下来详细说明如何在IAR平台建立STC8ASK64S4A12工程。
一、准备工作
1、安装IAR for 8051 10.10.1版本;
2、在IAR设备添加STC单片机类型;
  将附录文件夹devices下的STC文件夹复制到IAR安装的目录D:\IAR_8051_10\8051\config\devices中。
3、在IAR添加STC单片机头文件;
  将附录文件夹STC头文件下的ioSTC8.h和ioSTC89xxxx.h复制到IAR目录D:\IAR_8051_10\8051\inc中。
单片机类型和头文件都在附件上有,IAR for 8051 10.10.1软件需要自己去下载安装。
二、建立新工程
下面有图文并茂简介在IAR for 8051上建立STC8ASK64S4A12工程的详细过程。我会把自己的工程上传附录文件中。
1、选择菜单project下Create New Project,然后选择Empty project。


2、选择左边的工程,右键选中OPTION,在窗口选中General Option下Target的Device那一栏,选择右边的小图标


3、选中添加好的STC单片,STC8A8K64S4A12。如果找不到STC单片机,需要重新查看准备工作的部分有没有做好


4、在Tgrget中,Data model选中large,calling convertion选择XDATA stack reetrant。


5、在Library Configuration中,Library选择CLIB

6、Linker中勾选图示的选型。

7、勾选图示选型,这样才会生成hex文件。

8、选择菜单project中Edit Configuration,新建一个基于debug的工程,命名为:STC8A8S64S4A12

9、添加头文件的目录,这个是我自己工程的头文件目录
$PROJ_DIR$\代表工程的目录    $PROJ_DIR$\..\..\Components\board\include代表工程的上一级,再上级一级目录Components下board下include文件夹,一般头文件放在include文件夹内。

10、程序优化等级一般选择Medium,如果选择high会有不少无关变量被IAR全部优化掉,代码所占空间达到最小化,但是调试可能有问题。如果不想某个变量被优化,需要要在变量前加上volatile。

11、这是自己建立工程,利用DS18B20测量温度,并且通过printf函数打印出来。

12、编译后将hex文件烧录到STC8A8K64S4A12单片机里,再用串口打印工具,打印测量温度数据

三、IAR平台的优势
IAR平台对程序的编译效率比较高,编译所花时间比较少,另外IAR平台还有一个高级的代码分析工具:C-STAT Static Analysis,这个工具不同于编译器,它会分析代码潜在的隐患。比如你用malloc函数申请空间,如果没有对申请的指针做NULL判断,就用警告,但是如果直接用编译器编译,是没有这个警告的。这就是这个工具高级的地方,它可以让工程师完善代码,减少隐患。这个是keil v4.0没有的功能。
1、选择C-STAT Static Analysis中Analysis Project

2、分析结果,用malloc()有隐患

3、最后对pBUF指针做非空判断,再分析,就没有警告了


四、STC单片机在IAR平台的不足点
1、虽然IAR平台支持多种烧录器,但是没有基于IAR平台的STC单片机在线仿真工具和在线烧录器,程序烧录还是要用STC官方给的STC-ISP烧录程序。这种情况下,调试程序一般用printf函数外加串口来监控程序运行状态。
五、后记
本人也是从接触STC单片机入门的,STC给单片机初学者提供一个良好的学习平台,我这次的移植,也是希望能够多一个编译平台玩STC单片机,不再局限于keil平台。不同平台移植不容易,希望能得到大家的支持,共同完善。

全部资料51hei下载地址:

IAR平台建立工程准备文件.rar

34.59 KB, 下载次数: 505, 下载积分: 黑币 -5

准备文件

STC8A8K64S4A12.rar

226.62 KB, 下载次数: 344, 下载积分: 黑币 -5

图示例子工程文件

图片文件.rar

732.66 KB, 下载次数: 199, 下载积分: 黑币 -5

如果看不到图片,就看图片附件,序号对应好了

评分

参与人数 3黑币 +110 收起 理由
digger + 30 绝世好帖!
kaier1234 + 30 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:282095 发表于 2019-8-18 09:03 | 只看该作者
感觉还是蛮不错的
回复

使用道具 举报

板凳
ID:351097 发表于 2019-8-18 13:42 | 只看该作者

多谢支持
回复

使用道具 举报

地板
ID:43342 发表于 2019-10-2 17:28 | 只看该作者
谢谢楼主!
回复

使用道具 举报

5#
ID:111683 发表于 2019-11-3 02:27 | 只看该作者
我刚刚从keil过来,两个平台不知道哪个好用
回复

使用道具 举报

6#
ID:71535 发表于 2019-11-3 12:55 | 只看该作者
顶一下,个人感觉IAR比keil速度快些,用着顺手。
回复

使用道具 举报

7#
ID:645651 发表于 2019-11-20 11:17 | 只看该作者
stc官方要是支持IAR就方便了
回复

使用道具 举报

8#
ID:645651 发表于 2019-11-20 11:18 | 只看该作者
支持原创,回头试试看
回复

使用道具 举报

9#
ID:20672 发表于 2019-11-23 13:28 | 只看该作者
谢谢分享~~
回复

使用道具 举报

10#
ID:20672 发表于 2019-11-23 16:30 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
ID:248089 发表于 2019-12-1 14:23 | 只看该作者
谢谢分享~~~
回复

使用道具 举报

12#
ID:171776 发表于 2019-12-9 17:07 | 只看该作者
必须点赞,给予了莫大的帮助
回复

使用道具 举报

13#
ID:351097 发表于 2019-12-12 10:39 | 只看该作者
刚才自己重新下载了一下准备文件,编译不通过,发现是头文件被修改过,我是在8月17日写这篇文章顺便上传的附件。头文件在9月5号被修改成keil原版的,所以导致不支持IAR的编译。我希望审核员不要随便修改附件的内容,如果修改了,麻烦告知一下!
回复

使用道具 举报

14#
ID:619556 发表于 2020-4-10 16:41 | 只看该作者
真心感谢。楼主厉害,刚刚学51单片机,什么都不会,慢慢学习了
回复

使用道具 举报

15#
ID:299626 发表于 2020-10-19 19:36 | 只看该作者
很好的参考资料
回复

使用道具 举报

16#
ID:853998 发表于 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文件您知道是起什么作用的吗?
回复

使用道具 举报

17#
ID:853998 发表于 2020-12-7 15:54 | 只看该作者
没有你 发表于 2019-12-12 10:39
刚才自己重新下载了一下准备文件,编译不通过,发现是头文件被修改过,我是在8月17日写这篇文章顺便上传的 ...

如果这样的话,如何判断我下载的头文件是能用的还是不能用的?
回复

使用道具 举报

18#
ID:351097 发表于 2020-12-15 20:17 | 只看该作者
lee8871 发表于 2020-12-7 15:54
如果这样的话,如何判断我下载的头文件是能用的还是不能用的?

可以下载这个帖子的IAR工程,http://www.51hei.com/bbs/dpj-180611-1.html
回复

使用道具 举报

19#
ID:351097 发表于 2020-12-15 20:18 | 只看该作者
lee8871 发表于 2020-12-3 20:22
看到你的  dff文件都是空白的,但是其他单片机的dll文件是大概这样的:

;; IO Register definitions

ddf是硬件描述文件。你可以参考帖子http://www.51hei.com/bbs/dpj-181912-1.html
回复

使用道具 举报

20#
ID:149505 发表于 2021-3-2 23:02 | 只看该作者
楼主 我用“原创:0.96寸单色OLED绘制电子钟表盘的实现”里的“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”这影响编译么?


回复

使用道具 举报

21#
ID:102963 发表于 2021-3-5 23:19 | 只看该作者
感觉海水Keil好用,这个IAR用着感觉乱七八糟的。
回复

使用道具 举报

22#
ID:106977 发表于 2021-3-7 16:31 | 只看该作者
Keil平台加上STC的驱动,通过串口调试很方便了。资深开发者可玩玩其它开发平台。初学者建议还是用Keil好。
回复

使用道具 举报

23#
ID:149505 发表于 2021-5-28 15:51 | 只看该作者
moneng 发表于 2021-3-2 23:02
楼主 我用“原创:0.96寸单色OLED绘制电子钟表盘的实现”里的“IAR平台STC兼容文件”放到IAR 8051 8.10.3里 ...

ioSTC8(2021年05月28日15时49分46秒).rar (3.72 KB, 下载次数: 7)
适用于Embedded Workbench 6.0 Evaluation 8051 8.10.3的STC8单片机编译
回复

使用道具 举报

24#
ID:1094236 发表于 2023-9-22 10:39 | 只看该作者
谢谢楼主慷慨分享,这也太方便了
回复

使用道具 举报

25#
ID:1101997 发表于 2023-12-2 08:45 | 只看该作者
不是使用C++的话,就编译效率来说IAR不如KEIL,但对于大的工程明显C++代码更好组织一些。
回复

使用道具 举报

26#
ID:106977 发表于 2023-12-3 00:28 | 只看该作者
有多余精力去折腾,Keil已经习惯,也很方便,没觉得有啥毛病!STC官方开发的辅助软件、联机调试都是基于Keil。其它平台缺乏生态,仔细想一想看值不值?
回复

使用道具 举报

27#
ID:192623 发表于 2023-12-3 16:52 | 只看该作者
没有意义, 本身IAR编辑器就不是很好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表