打印
[牛人杂谈]

开发003在IAR和Keil的对比

[复制链接]
296|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
进入新环境时,起初并不容易。花费时间来熟悉新的新环境,新的工具和新的东西。“新”意味着所有与您在引入之前一直使用的东西不同的东西。因此,在很多情况下,我都无法使用新的微控制器。但是,在进行了一些体面的附加赛之后,事情开始了。
[size=15.2015px]肯尼迪(JFK)总统在登月演讲中应该给所有尝试做新的事情或他/她从未做过的事情的人一个鼓舞人心的笔记:[size=15.2015px]在这十年中,我们选择去月球去做其他事情,不是因为它们很容易,而是因为它们很难。因为这一目标将有助于组织和衡量我们的最佳能量和技能,因为这一挑战是我们愿意接受的挑战,我们不愿推迟的挑战,我们打算赢得的挑战以及其他挑战。
[size=15.2015px]Keil和IAR都是编码Nuvoton MCU的出色工具。我都用过,两种情况都一样。从字面上看,没有任何区别。我不推荐使用哪一种,我将选择权留给读者。但是,在某些地方您可能会发现将一个编译器的代码移植到另一个编译器时遇到困难。下表总结了其中一些差异

在此我还要强调两点。首先,Keil和IAR编译器都可能在代码编译期间引发一些错误。这些错误大多数是由BSP定义引起的。这样的错误之一在下面的行中:

[size=15.2015px]如果您尝试使用set_P0S_6定义,IAR有时会引发错误,因为它找不到BIT_TMP。但是,还有其他类似的定义不会引发此类错误,并且在Keil中您不会注意到这样的内容。这样的事情是令人讨厌的不合逻辑的惊喜。我们必须了解,BSP仍在开发中。永远记住,数据表是您的朋友。我建议当您尝试此处显示的示例时,请阅读数据表的相关部分,以增强学习和理解能力。
[size=15.2015px]要注意的另一件事是,并非总是我们有幸避免寄存器级编码,因此在需要时,我们必须具有使用它们的正确知识。我们还可以使用位级操作,如下所示:
[size=15.2015px]
[size=15.2015px]有时但并非总是如此,我们不得不用旧的方式编写代码。有时将汇编代码和C代码混合在一起是必要的。例如,软件延迟库使用此概念。
[size=15.2015px]还有其他方面也要考虑,例如区分大小写和编码约定。与基于轮询的方法相比,选择中断驱动的方法是明智的。代码应包含在层次结构中。像这样,有很多东西可以使您的代码更智能且无错误。有关此类知识的最佳知识来源以及各个制造商的应用笔记。

[size=15.2015px]每当创建新库时,请将以下内容与您选择的其他头文件一起添加到库的源代码中,以避免出现错误和令人讨厌的事情:
[size=15.2015px]
[size=15.2015px]另外,我制作了一组名为“ Extended_Functions ” 的文件。在这里,我添加了几乎每次使用通用内部硬件(例如定时器,ADC等)时所需的所有功能。这些文件就像我为某些内部硬件创建的所有其他功能的存储库一样(Nuvoton所做的事情)提供的东西,使编码变得更加容易。

使用特权

评论回复
沙发
小明的同学| | 2019-12-31 21:59 | 只看该作者
两者的启动文件不同导致的。

使用特权

评论回复
板凳
zhuomuniao110| | 2019-12-31 22:13 | 只看该作者
不知道可以互换启动文件不。

使用特权

评论回复
地板
xixi2017| | 2020-1-5 23:59 | 只看该作者
Keil好用吧。

使用特权

评论回复
5
xixi2017| | 2020-1-5 23:59 | 只看该作者
目前用keil的人好像比较多一些。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

1415

帖子

2

粉丝