开发软件:IAR for stm8
固件库:STSW_STM8069_STM8S和STM8A标准外设固件库
1.下载IAR for stm8 ,当进入到IAR官网时(点击上方IAR for stm8链接),显示界面大概如下:
把网页拖到最下面看到下图,点击 download a free trial 将会拉出一个下载按键,这个显示的IAR版本是最新的。本人目前看到的版本为3.10。
下载完成后,根据以往的方式进行安装,然后通过IAR破解工具将其破解。破解目前网上很多随便下载。当然本人自己也提供了下载链接 https://download.csdn.net/download/fangjiaze444/10944375 。
2.下载固件库,链接已经在上面已经超链接了。将STSW_STM8069_STM8S和STM8A标准外设固件库下载下来后。就可以开始我们的工程了。
打开IAR for stm8,新建一个工作空间,点击file菜单,再点击new workspace,然后再保存该工作空间指定到你要开发的工程目录中。比如我们在F:\STM8_test目录下保存该工作空间,因此电机file菜单,再点击save workspace as。。指定到该目录。
填写文件名为helloworld,点击保存。这样就生成下面的工作空间。
接下来就在该空间目录下创建工程,点击Project菜单,再点击create new project,得到如下图:
在project templates里面选择 c 选项然后再点击ok,同样得到如下图,名字也可以写成helloworld,当然你要想写别的名字都行。填好名字直接保存到该工作空间即可。
此时该工程的结构如下:
可以看看该工程目录大致的样式如下:
这个时候就可以添加固件库了。如果为了整个工程相对干净整洁,可以模仿我的目录结构。
首先,从上文已经拿到了stm8开发库,库目录结构如下:
我们直接进入libraries,再进入STMS_StdPeriph_Driver,得到如下结构:
inc目录内包含库的所有外设驱动函数的头文件,src目录内包含对应的c原文件。我们把这两目录的父目录复制到我们的工程目录中,得到工程结构如下:
然后我们还需要工程相关的配置头文件及c文件,退后到固件库的主目录,然后进入到project
example是api使用的例程,可以作为参考,而我们需要的文件在Template里面,进入它。把里面的main.c,stm8s_conf.h,stm8s_it.c和stm8s_it.h复制出来到我们的工程,我们的工程可以新建一个USER目录,再粘贴进去,得到如下:
由于USER是在固件库拿来的main主程序文件,因此我们需要把工程下默认生成的main.c文件去掉,之后再导入文件工程时替换掉原来的main.c文件,去掉工程目录的main.c之后,工程结构如下:
之后就需要在IAR上导入文件工程了,首先先把默认的main.c文件remore掉,右键该文件即可删除。
之后再添加组,这里我们添加了LIB和USER两个组。
得到结果如下:
之后再右键LIB组,添加我们的库的API的C文件。右键LIB,如下:
选择到如下 工程目录\STM8S_StdPeriph_Driver\src,添加里面所有的c文件。点击ctrl+A快捷键即可全部添加
点击打开即可得到如下:
再右键USER组添加目录USER下的所有文件:
之后工程组结构如下:
接下来就进入到配置环节,虽然我们把必要的文件加进来了,但是由于这些驱动文件能够通用各个stm8的任何系列的芯片,因此少不了option配置。废话少说,直接右键工程进入options
我们选择一些芯片的系列。假如我选择stm8s003f3,得到如下:
之后,进入c/c++ Compiler,然后点击Preprocessor选项,得到如下:
在additional include directories下添加我们需要编译的头文件的目录,只要是需要的头文件,他的路径必须加进来,否则编译会找不到对应头文件。添加结果如下,因为目前就只有这两目录有头文件。
当然为了方便移植,我们通过环境变量来录入我们的头文件路径。下面是如何操作修改成环境变量的。
得到结果如下:
接下来直接编译该工程了,发现报了很多错,该错误告诉我们,我们还需要选择一个目标。
跟踪这个错误,点击该错误看它。
说明我们需要添加一个宏,既然我选择了STM8S003f3,所以根据它列出来的选项,我选择了SMT8S003,因此在main主程序上可以添加 #define STM8S003 这一行,当然IAR本身就已经自带options里配置添加宏的栏框,故我们直接在options上添加,如下图:
点击ok再编译,此时可能会弹出各种未定义:
原因很简单,由于stm8s003的外设资源比较少,故该sdk就会通过我们刚刚添加的宏来屏蔽一些外设,这将导致一些外设c文件将编译不通过,因此,我们只需要把没编译通过的外设从工程中移除就ok了,下图可以看到有些文件后边多了个红点。
说明这些多了个红点是刚刚未编译通过的文件。把这些文件移除掉,一样右键要移除的文件,点击remove即可。移除之后剩下的结构如下:
看样子文件比刚刚少了一些,然后再编译该工程,得到如下图:
此时,上图编译日志显示的是0错误0警告。说明工程已经建立完成了。有什么异议希望能在评论下指点我错误的做法。
当要烧录时,也需要对options做配置,可以参考:
IAR for stm8通过ST-link烧录配置操作