下载库函数
本文介绍基于 IAR+官方标准固件库,来新建 STM8S003F
工程,STM8S 的标准固件库可以到 ST 的官方网站中找到并下载:ST官网
1.在搜索栏上搜索 STM8S003F
,点击工具与软件
2.在工具与软件栏中找到:STM8S/A标准外设库,点击下载(en.stsw-stm8069_v2.3.1.zip
):
3.把下载的标准固件库解压并打开,可以看到里面有如下内容:
建立工程模板
上图中的Libraries
和Project
文件夹中,有部分内容是新建工程所需要的,在建立工程之前,先选择一个路径,新建一个 Template
文件夹(作为以后新建工程的模板),并在文件夹中分别新建以下五个文件夹:
APP
:用于存放用户程序,简单的应用这个文件夹一般空在那里;Driver
:用于存放工程文件;从STM8 标准固件库以下路径:..\STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Template\
,拷贝main.c
、 stm8s_conf.h
、stm8s_it.c
、stm8s_it.h
四个文件到我们建好的User文件夹。Lib
:用于存放STM8标准固件库文件:从前面下载的STM8标准固件库里找到 以下路径:…\STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver\,然 后将文件夹下inc和src两个文件拷贝到我们建立好的文件夹Lib下Readme
:用于存放说明文档,文件夹下可建立 .doc
文件或 .txt
文件,如readme.txt
, 记录开发进度或技术说明;User
:用于存放自己编写的驱动文件;
IAR工程建立及属性设置
新建workplace和project
1.打开IAR,新建一个工作空间(即workspace,这步有时候可以跳过,因为启动IAR时已经有一个workspace),点击 Project
→Cheat New Project...
→Empty project
→OK
→然后弹出保存窗口,输入你要建立的工程名,如STM8S_IR
,选择保存文件夹,将工程保存在我们第二步创建的文件夹的User文件夹下如..\STM8_LED\User\
,然后点击保存。
2.出现以下一个空的工程:
Add Group
用鼠标选中该工程,点击右键出现右键菜单,依次点击 Add
→Add Group...
创建分组如下:
注:如果项目计划里有用户应用程序,则还需添加 App
分组;如果有用到自己编写的驱动文件,则需要添加 Driver
分组;
Add Files
在上面三个 Group
中分别 Add Files...
,添加如下:
Lib
:添加stm8s_gpio.c
和stm8s.h
文件(该文件路径为..\STM8_IR\Lib\src\
,这里其实可以不用加.h
文件,但由于后面有修改到,所以加了;添加之后会自动产生一个 Output
组)Readme
:添加 readme.txt
文件(该文件路径为..\STM8_IR\Readme\
)User
:添加 main.c
文件(该文件路径为..\STM8_IR\User\
)
头文件编译路径设置
这里只添加了 .c
文件,而不用添加相关.h
文件的原因是,我设置了头文件的包含路径 ,设置如下:工程名右键→Options...
→C/C++ compiler
→Preprocessor
路径"$PROJ_DIR$\..\Lib\inc
"是相对路径,"$PROJ_DIR$
"是你在常见new project的时候所选择的路径,换句话说也就是 .ewp
的所存放的路径,..\
指的是当前目录的上一个目录,当然,如果你的.c
文件是和.h
文件是在同一个目录下的话,可以不用设置该路径。
芯片型号设置
接下来还需要对工程属性进行设置:右键点击工程 STM8_IR
,在弹出来的菜单里点击 Options...
,在弹出的窗口<Options for mode “STM8_LED”>的 General Options
标签页的 Target
标签里的 Device
栏选择芯片型号,我用的是 stm8s003F3
,根据实际芯片选择即可。
代码优化选项
工程的进一步设置,首先是 C/C++ Compiler
标签的 Optimizations
标签页,Level
框中勾选 Medium
,这是选择了中等的代码优化选项
烧录文件格式设置
然后是 Output Converter
标签页,设置串口下载文件格式,设置如下:
Linker
中的 Output
中的 output filename
不需要进行修改,保持xxx.out
文件格式就行了,不需要改成.hex
文件,不然编出来的hex
文件放到 stvp 中烧录会出现not intel hex format的报错提示(而且改出来之后的hex
文件比较大,跟原来的out
文件差不多大小)
烧录工具设置
Debug
标签的 Setup
标签页,在 Driver
栏选择 ST-LINK
。注:这项设置非常重要,我们最常用的就是 ST-LINK
下载和调试功能:
对头文件"stm8s.h"修改
最后一个,打开 stm8s.h
文件,做一个小的修改,即把你使用芯片的对应的代码从注释状态解放出来(从官网下载来的库一开始都是只读RO模式,要改成可修改模式),举例如下:
这个操作其实等同于以下操作(两者选其一就行了,不然编译时会Warning
):
保存工程
点击Save All
,将一个 .eww
文件保存到 User 目录下,下次要打开该工程直接点击此文件就可以了
IAR使用过程中遇到的问题
包含错误的路径
原因是我对整个工程目录进行了移动,移动后,需要点击Project
→Clean
,这样才不会再弹出包含错误路径的窗口
no definition for xxx
原因是没引进相关的 .c
文件,需要在Group组中的添加 stm8s_gpio.h
就能解决这个问题了
duplicate definitions for xxx
原因是重复定义了,比如下面报错例子:
具体原因是:delay.c
中的中断服务函数、remote.c
中的中断服务与stm8s_it.c
中的中断服务函数重复定义了;所以要把stm8s_it.c
给remove掉
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)