跟大家分享stm8s官方标准固件库如何加载进IAR工程的详细过程。
本帖最后由 jianhong_wu 于 2015-6-23 15:22 编辑★坚鸿-深圳:
第一次把stm8s官方标准固件库加载进IAR工程会遇到很多问题和报错,现在跟大家分享stm8s官方标准固件库如何加载进IAR工程的详细过程。 第一步:准备文件夹。在D盘目录下,新建一个文件夹取名“stm8”。 第二步:把stm8s官方标准固件库的两个文件夹“inc”和“src”分别复制到“stm8”文件夹里。 第三步:添加三个缺失的库文件。不知道为什么,我下载的官方标准库里面没有stm8s_it.h,stm8s_conf.h和stm8s_it.c这三个文件,我是在某个工程例程里找到这三个文件的,这次也放到论坛附件分享给大家。大家找到这三个文件后,请把stm8s_it.h和stm8s_conf.h这两个头文件放入“inc”文件夹里,把stm8s_it.c放入“src”文件夹里。stm8s_it.c是中断入口函数的源文件,很重要。而stm8s_conf.h我倒没有仔细研究,大家可以暂时不管。三个缺失文件打包下载: 第四步:继续返回到“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”文件夹目录下。 第九步:新建inc,src,UserC,UserH这4个文件组进工程。在左边的“Workspace”工作区中,右键点击选中“stm8-Debug”文件,在下拉菜单中选择“Add”的“Add Group...”,命名为“inc”,然后点击“OK”,一个文件组就新建完成。依此方法,分别新建剩下的src,UserC,UserH这3个文件组。 第十步:分别把D盘“stm8”目录下对应的“inc”,“src”,“UserC”,“UserH”这4个文件夹里面的所有文件添加进对应的inc,src,UserC,UserH这4个文件组里。操作方法是这样的,比如要添加“inc”文件夹的所有文件到inc文件组里,右边点击选中inc文件组,在下拉菜单中选择“Add”的“Add File...”,在弹出的对话框里选择D盘目录下“stm8”的“inc”文件夹,用“Ctrl+A”组合按键把里面所有文件选中,点击“打开”就可以了。其它文件夹的添加方法一样。 第十一步:打开main.h头文件,在里面输入以下代码:#ifndef _MAIN_
#define _MAIN_
void main(void);
#endif
不添加main.h的头文件也没关系。添加main.h头文件只是我个人的习惯,我喜欢所有的.c源文件都对应一个.h头文件。 第十二步:打开main.c文件,在里面输入以下代码:
#include "stm8s.h" //每个.c都文件都必须包含此系统头文件"stm8s.h"
#include "main.h" //每个.c都文件都必须包含它对应的头文件"XXXX.h"
void main(void)
{
while(1)
{
;
}
}
第十三步:选择芯片型号。我是用stm8s105k6t6c单片机的,右键点击选中“stm8-Debug”文件,在下拉菜单中选择“Options...”,在弹出对话框中,选择“General”选项,在“Target”的“device”中,选择“STM8S”系列的“stm8s105k6”。 第十四步:编译工程。点击“project”目录下的“Rebuild All”。第一次编译会弹出一个另存为的对话框,输入工程文件名“stm8”点击保存在D盘下的“stm8”文件夹里。然后进行编译,会发现很多错误。
第十五步:解决错误:Fatal Error: cannot open source file "stm8s.h" 。解决办法:右键点击选中“stm8-Debug”文件,在下拉菜单中选择“Options...”,在弹出对话框中,选择“C/C++ Compiler”选项,切换到“Preprocessor”子选项中,在“Additonal include directories...”框内,填入所包含的两个头文件夹目录:D:\stm8\inc
D:\stm8\UserH
第十六步:继续Rebuild All编译,还是发现很多错误,解决错误:Fatal Error: #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: identifier "ADC2" is undefined 以及CAN,TIM5,TIM6,UARAT1,UARAT5等错误。这类错误是因为我所选用的STM8S105系列芯片并没有这些资源,所以我要依次把这些没有资源的头文件和源文件都从工程中删除。比如我要删除ADC2.h和ADC2.c文件,操作是这样的:在左边工作区中的inc文件组里,右键选中“stm8_adc2.h”在下拉菜单中点击“remove”,在弹出的对话框中选择“是”就可以删除此头文件。在左边工作区中的src文件组里,右键选中“stm8_adc2.c”在下拉菜单中点击“remove”,在弹出的对话框中选择“是”就可以删除此头文件。
第十八步:第十八步把所有没有用到的资源文件删掉后,继续Rebuild All编译,就没有错误,但是有一条警告:Warning: missing return statement at end of non-void function "ITC_GetCPUCC" D:\stm8\src\stm8s_itc.c 56 这个是库函数文件stm8s_itc.c内部自带的警告,是一个bug,跟我们无关,我们不用管。到此,加载一个标准库进IAR工程的过程操作完毕。 鸿哥,干嘛添加#define STM8S105啊?把下面对应的注释去掉不就好啦
清风明月 发表于 2015-7-1 15:22
鸿哥,干嘛添加#define STM8S105啊?把下面对应的注释去掉不就好啦
那样也可以。比较简洁省事。
页:
[1]