IAR创建STM8裸机工程创建---STM8开发【二】
目录
一、准备工作
1、首先创建分配文件夹
2、BSP文件夹说明
3、Mycode文件夹说明
4、user文件夹说明
5、STM8S标准外设库下载
6、从库函数例程目录拷贝文件main.c、stm8s_conf.h、stm8s_it.c 、stm8s_it.h到USER目录,步骤如下
二、工程创建
1、打开IAR软件
2、 打开IAR,新建一个工作空间,并保存
3、创建工程
4、添加文件分组
5、往新建的分组里面添加文件
1)往USER文件添加main.c、stm8s_it.c
6、配置工程
1) 选择你的芯片,我这边是用STM8S003K3
3)添加头文件路径
4)预处理Preprocessor - 预定义
5)选择了合适的代码优化选项。
6)输出Hex文件
7)选择下载调试工具
三、工程编译
四、如何使用IAR进行程序下载
五、如何使用STV软件进行下载
1、打开软件 STVP
2、点击选择配置参数
3、选择hex下载文件
4、是否锁定芯片程序
5、Program –> All tabs(on active sector ifany),开始下载程序
6、板子重新上电,程序开始运行
上一篇文章我们讲解了我的STM8主要开发工具IAR的破解安装,既然软件破解安装成功了,那么接下里就要来创建我们的工程
一、准备工作
1、首先创建分配文件夹
整个工程可以粗略的划分为几个文件夹:
BSP | 底层驱动比如GPIO\Timer等驱动文件 |
Mycode | 用户编写的相关文件,主要编写的文件都在这个文件夹里 |
STM8_FWLIB | 标准库文件 |
USER | 主函数及芯片启动文件等文件 |
2、BSP文件夹说明
BSP文件夹:主要用来用放置底层接口驱动文件,比如GPIO初始化、定时器初始化、PWM、串口初始化等等配置
3、Mycode文件夹说明
Mycode文件夹:用来存放自己添加的驱动子模块程序
4、user文件夹说明
user文件夹:这个文件夹主要是用来存放自己编写的.C和.H文件,一般我会将main.c和main.h文件放在user根目录下以及创建的工程还有STM8的中断头文件文件夹等
5、STM8S标准外设库下载
官网下载链接(需要ST账号登陆):
https://www.st.com.cn/zh/embedded-software/stm8-embedded-software/products.html
截止2025.05.28最新的STM8S的标准库版本是V2.3.1,我这边现阶段使用的是V2.3.0,因为相差不大,我就没下载最新,如需要最新你们就自己登录下载就好
此链接是V2.3.0标准库
通过网盘分享的文件:STM8S标准外设库文件V2.3.0
链接: https://pan.baidu.com/s/1MTK7B7mKyGK2T3aXVlo65A 提取码: kf23
6、从库函数例程目录拷贝文件main.c、stm8s_conf.h、stm8s_it.c 、stm8s_it.h到USER目录,步骤如下
复制这四个文件
来到我创建的裸机工程文件夹下,进行粘贴
7、在回到标准库这里,把标准库文件拷贝到我们的裸机工程里
复制一下这两个文件夹
粘贴到我们的工程
到这里,我们前期工作就完成了
二、工程创建
1、打开IAR软件
2、 打开IAR,新建一个工作空间,并保存
然后保存这个工作空间 到我们的USER文件夹下
3、创建工程
如下显示,至此,一个空的基础工程就创建好了,需要进一步添加文件到工程和配置工程。
4、添加文件分组
我们按照之前文件命名方式来添加分组
其他文件按照此方式如法炮制,最终显示如下
5、往新建的分组里面添加文件
1)往USER文件添加main.c、stm8s_it.c
2)往STM8_FWLIB文件添加.c库文件
6、配置工程
右击工程名
1) 选择你的芯片,我这边是用STM8S003K3
2)库配置Library Configration
如果需要使用某些标准的库函数接口(如我们使用的printf and scanf),就需要选择Full(见下图)。
需要你就选择,FULL
不需要,你就选择NORMAL
我这边选择FULL,Printf常用
3)添加头文件路径
先添加USER文件路径
可以打看添加路径后显示红色打叉,需要再点击右边的箭头,然后选择第二个对路径进行转换
这样才可以,然后此后还是如法炮制,把所有都添加下
4)预处理Preprocessor - 预定义
由于我使用的是STM8S003K3T6,所以在这里我要填入 STM8S003
你们使用其他芯片你们就写入对应的型号即可
那么可能有同学就会问,这个型号要大写还是小写呢?我们就打开stm8s.h文件,红框里面找到对应的型号,复制下来
将复制下来的型号,填入进去
5)选择了合适的代码优化选项。
None->
有最好的debug支持,变量的生命周期会贯穿它的整个作用域,也就是说编译器不做任何优化,只要是变量的作用域,这个变量就是有效的。
Low->
仍然是具备调试支持的,优化的是变量的生命周期,如果一个变量没有作用了,后面不会用到它了,就会把它优化掉,不让它贯穿它的整个生命周期。
这有什么好处呢?这个变量不存在了,就意味着寄存器的压力减小了很多,可以腾出更多空间给更有需要的变量
Medium->
除了上述优化以外,还加入了很多新的优化。无用的代码清除。冗余标签消除
High->
最高程度的优化。具备以上所有的优化之外
结论:要想观察局部变量的值,在Debug调试的时候可以把优化等级设为None,才可以看到变量的变化,正常时候我是设置为LOW,Medium和Highz这两个深度优化虽然可以减小代码占用空间,但是出现问题很难排查
6)输出Hex文件
7)选择下载调试工具
三、工程编译
1)编译工程
出现一堆错误,提示没有没有ADC1 TIM5 TIM6 UART2 UART4等等
原因:因为我们选型的芯片(STM8S003)没带有ADC2 CAN TIM3 TIM5 TIM6 UART2 UART3 UART4,所以在库文件列表文件中去掉去掉
我们一个个进行移除
移除完后,在进行编译
四、如何使用IAR进行程序下载
我们将STLINK与板子下载口进行连接,点击右上角的绿色按钮即可
五、如何使用STV软件进行下载
1、打开软件 STVP
2、点击选择配置参数
3、选择hex下载文件
File -> Open,加载编译好的.hex文件
4、是否锁定芯片程序
当你导入hex文件后,点击下方的点击OPTION BYTE。 ON就是每次烧写完将FLASH锁住。以免别人读你的IC。实际看你需求了
调试阶段我们就使用OFF即可
5、Program –> All tabs(on active sector ifany),开始下载程序
下载成功提示
6、板子重新上电,程序开始运行
7、裸机工程的链接
通过网盘分享的文件:STM8S003裸机工程
链接: https://pan.baidu.com/s/1rPGjdGwhhgdxOX36RA20tg 提取码: 3p21