独闷闷网

 找回密码
 立即注册
搜索
查看: 13440|回复: 2
打印 上一主题 下一主题
收起左侧

[原创] 跟大家分享stm8s官方标准固件库如何加载进IAR工程的详细过程。

[复制链接]
跳转到指定楼层
楼主
发表于 2015-6-23 15:10:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jianhong_wu 于 2015-6-23 15:22 编辑

★坚鸿-深圳:
    第一次把stm8s官方标准固件库加载进IAR工程会遇到很多问题和报错,现在跟大家分享stm8s官方标准固件库如何加载进IAR工程的详细过程。
    第一步:准备文件夹。在D盘目录下,新建一个文件夹取名“stm8”。
   
    第二步:stm8s官方标准固件库的两个文件夹“inc”和“src”分别复制到“stm8”文件夹里。
     第三步:添加三个缺失的库文件。不知道为什么,我下载的官方标准库里面没有stm8s_it.hstm8s_conf.hstm8s_it.c这三个文件,我是在某个工程例程里找到这三个文件的,这次也放到论坛附件分享给大家。大家找到这三个文件后,请把stm8s_it.hstm8s_conf.h这两个头文件放入“inc”文件夹里,把stm8s_it.c放入“src”文件夹里。stm8s_it.c是中断入口函数的源文件,很重要。而stm8s_conf.h我倒没有仔细研究,大家可以暂时不管。
三个缺失文件打包下载: 3个缺失的库文件.rar (4.58 KB, 下载次数: 823)
  
    第四步:继续返回到“stm8”文件夹目录下,分别新建两个用户代码文件夹“UserC”和UserH,它们分别保存用户的.c源文件和.h头文件。
  
    第五步:在“UserC”里新建一个记事本main.c源文件,注意扩展名更改为.c
   
    第六步:在“UserH”里新建一个记事本main.h头文件,注意扩展名更改为.h

    第七步:双击打开“IAR Embedded Workbench”编译软件。打开此软件时,会自动打开两个东西。一个是“IAR Information center for...”,一个是“License Wizard”。大家不用管它们,分别把它们关闭即可。
  
    第八步:利用向导新建一个工程。在菜单“Project”的下拉菜单下,选“Create new project”。在弹出的对话框中选“Empty Project”点击“OK”,在弹出的“另存为”对话框里,命名工程文件名称为“stm8”,同时选择保存在D盘的“stm8”文件夹目录下。
  
     第九步:新建incsrcUserCUserH4个文件组进工程。在左边的“Workspace”工作区中,右键点击选中“stm8-Debug”文件,在下拉菜单中选择“Add”的“Add Group...”,命名为“inc”,然后点击“OK”,一个文件组就新建完成。依此方法,分别新建剩下的srcUserCUserH3个文件组。
  
    第十步:分别把D盘“stm8”目录下对应的“inc”,“src”,“UserC”,“UserH”这4个文件夹里面的所有文件添加进对应的incsrcUserCUserH4个文件组里。操作方法是这样的,比如要添加“inc”文件夹的所有文件到inc文件组里,右边点击选中inc文件组,在下拉菜单中选择“Add”的“Add File...”,在弹出的对话框里选择D盘目录下“stm8”的“inc”文件夹,用“Ctrl+A”组合按键把里面所有文件选中,点击“打开”就可以了。其它文件夹的添加方法一样。
     第十一步:打开main.h头文件,在里面输入以下代码:
  1. #ifndef _MAIN_
  2. #define _MAIN_
  3. void main(void);
  4. #endif

复制代码
不添加main.h的头文件也没关系。添加main.h头文件只是我个人的习惯,我喜欢所有的.c源文件都对应一个.h头文件。
     第十二步:打开main.c文件,在里面输入以下代码:

  1. #include "stm8s.h" //每个.c都文件都必须包含此系统头文件"stm8s.h"
  2. #include "main.h" //每个.c都文件都必须包含它对应的头文件"XXXX.h"

  3. void main(void)
  4. {
  5. while(1)
  6. {
  7. ;
  8. }
  9. }
复制代码


     第十三步:选择芯片型号。我是用stm8s105k6t6c单片机的,右键点击选中“stm8-Debug”文件,在下拉菜单中选择“Options...”,在弹出对话框中,选择“General”选项,在“Target
的“device”中,选择“STM8S”系列的“stm8s105k6”。
    第十四步:编译工程。点击“project”目录下的“Rebuild All”。第一次编译会弹出一个另存为的对话框,输入工程文件名“stm8”点击保存在D盘下的“stm8”文件夹里。然后进行编译,会发现很多错误。

    第十五步:解决错误:
Fatal Error[Pe1696]: cannot open source file "stm8s.h"
解决办法:
右键点击选中“stm8-Debug”文件,在下拉菜单中选择“Options...”,在弹出对话框中,选择“C/C++ Compiler”选项,切换到“Preprocessor”子选项中,在“Additonal include directories...”框内,填入所包含的两个头文件夹目录:
  1. D:\stm8\inc
  2. D:\stm8\UserH
复制代码



   第十六步:继续Rebuild All编译,还是发现很多错误,解决错误:
Fatal Error[Pe035]: #error directive: "Please select first the target STM8S/A device used in your application (in stm8s.h file)"
解决办法:
点击打开头文件stm8s.h,在此文件里添加一行代码,表示当前选择的编译的芯片系列,我用的是stm8s105k6t6c,所以我添加的代码是:“#define STM8S105”。

     第十七步:继续Rebuild All编译,还是发现很多错误,解决错误:
Error[Pe020]: identifier "ADC2" is undefined
以及CANTIM5,TIM6UARAT1UARAT5等错误。这类错误是因为我所选用的STM8S105系列芯片并没有这些资源,所以我要依次把这些没有资源的头文件和源文件都从工程中删除。比如我要删除ADC2.hADC2.c文件,操作是这样的:在左边工作区中的inc文件组里,右键选中“stm8_adc2.h”在下拉菜单中点击“remove”,在弹出的对话框中选择“是”就可以删除此头文件。在左边工作区中的src文件组里,右键选中“stm8_adc2.c”在下拉菜单中点击“remove”,在弹出的对话框中选择“是”就可以删除此头文件。

     第十八步:第十八步把所有没有用到的资源文件删掉后,继续Rebuild All编译,就没有错误,但是有一条警告:
Warning[Pe940]: missing return statement at end of non-void function "ITC_GetCPUCC" D:\stm8\src\stm8s_itc.c 56
这个是库函数文件stm8s_itc.c内部自带的警告,是一个bug,跟我们无关,我们不用管。到此,加载一个标准库进IAR工程的过程操作完毕。
乐于分享,勇于质疑!
沙发
发表于 2015-7-1 15:22:56 | 只看该作者
鸿哥,干嘛添加#define STM8S105啊?把下面对应的注释去掉不就好啦

0)BQ2MVL9`E[15DT5TOX33F.png (140.2 KB, 下载次数: 261)

0)BQ2MVL9`E[15DT5TOX33F.png
乐于分享,勇于质疑!
板凳
 楼主| 发表于 2015-7-3 00:06:24 | 只看该作者
清风明月 发表于 2015-7-1 15:22
鸿哥,干嘛添加#define STM8S105啊?把下面对应的注释去掉不就好啦

那样也可以。比较简洁省事。
乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-4-24 18:55 , Processed in 0.174543 second(s), 20 queries .

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