1、一步步建立STM8S工程项目祥图一步步建立STM8S工程项目鉴于本人曾经摸索了不少时间,走了很多弯路,为了使新手更好地快速入门,特编写此教程。本文件期望达到如下目的:1、从无到有建立全新的STM8S工程项目2、能调用标准库函数3、会定义位,懂得如何查找特定的寄存器并直接赋值。在开始之前,假设你已经安装了STVD和cosmic软件,STVD在ST官网下载,COSMIC到官网或网上可找到评估版或破解版。首先下载ST标准库,从官网下载,我在网上下载到的压缩文件名是stm8_stdperiph_lib。可按如下方法下载:进入STM8Smainstream的resources页,进入Firmware,下
2、载“STM8S/A Standard peripheral library”如下图所示:其次搜索并下载“STM8S库函数中文参考”,对新手省去学习库函数的麻烦。第一步,打开STVD,File - New WorkSpace可选creat workspace and project创建工程和项目在新工程框中,输入工程名,先点左边红色框的选择文件夹,然后点新建文件夹并输入名称确定后填入项目名称,在Toolchain选择所用编译器,本例选cosmic点击OK后,选中IC型号,双击,再点OK点击OK,初步工程和项目已经建立,编译通过。将下载的STM8S标准库stm8_stdperiph_lib解压,如
3、下图,我下载的版本解压后是STM8S_StdPeriph_Lib_V2.1.0文件夹。打开以上文件夹,如下图目录,从标准库中复制以下三个文件到新建工程项目中:新建工程文件目录粘贴如下:将STM8S_StdPeriph_Lib_V2.1.0Libraries下的STM8S_StdPeriph_Driver文件夹复制到你刚才建立的工程文件夹里,如下图:将以上stm8s_it.c和stm8s_conf.h添加到STVD的工程文件夹中,然后将stm8s.h从STM8S_StdPeriph_Driver下的inc文件夹中添加,如下图双击打开stm8s.h,将所用的单片机型号的注释符号去掉,如下图:将st
4、m8s_it.c中的INTERRUPT_HANDLER(NonHandledInterrupt, 25)函数注释掉,因为重复定义了。然后编译通过。在STVD中的project右键New Folder,建立所需文件夹建立一个文件夹STM8S_StdPeriph_Driver,如下图:在STVD中点击STM8S_StdPeriph_Driver右键,添加标准库文件stm8s_gpio.c。双击打开stm8s_conf.h文件,将如下图所示红色框的定义文件注释掉。打开STM8S库函数中文参考,下例中设置PA0口点击复制,将其粘贴到main函数中,并在main.c中添加#include stm8s.h
5、,编译通过,如下图。至此一个基本的STM8S工程项目建立完毕。若需要使用到单片机的其它模块功能,直接按添加stm8s_gpio.c的方法添加,比如要用到time4,则添加stm8s_tim4.c到工程中即可。以上是使用标准库函数的编写方法,另外可直接使用已经定义好的头文件,直接对寄存器和位赋值设置操作。到STVD安装目录找到单片机类型的头文件,本例是C:Program FilesSTMicroelectronicsst_toolsetinclude中找到STM8S003.h和STM8S103F.h,复制到新建的工程文件夹中,如下两图一中在STVD中添加单片机头文件,如下图,本例是stm8s00
6、3f3.h和stm8s103f.h,文件中有对特殊功能寄存器的定义。在main.c文件中加入“#include stm8s003f3.h”或“#include STM8S103F.h”。这样就可以直接以单片机头文件定义的寄存器名直接赋值,比如:为了便于位操作,可另建一个位定义文件,本例是建立stm8s_bitsdefine.h文件名,以下是示例,用户可自行设置添加内容:#ifndef _MACRO_BITS_DEFINE_H_ #define _MACRO_BITS_DEFINE_H_ /*-*/IO bits define/* Port A data output bits*/volatil
7、e _Bool PA_ODR_0 PA_ODR:0;volatile _Bool PA_ODR_1 PA_ODR:1;volatile _Bool PA_ODR_2 PA_ODR:2;volatile _Bool PA_ODR_3 PA_ODR:3;volatile _Bool PA_ODR_4 PA_ODR:4;volatile _Bool PA_ODR_5 PA_ODR:5;volatile _Bool PA_ODR_6 PA_ODR:6;volatile _Bool PA_ODR_7 PA_ODR:7;/* Port A data input bits*/volatile _Bool P
8、A_IDR_0 PA_IDR:0;volatile _Bool PA_IDR_1 PA_IDR:1;volatile _Bool PA_IDR_2 PA_IDR:2;volatile _Bool PA_IDR_3 PA_IDR:3;volatile _Bool PA_IDR_4 PA_IDR:4;volatile _Bool PA_IDR_5 PA_IDR:5;volatile _Bool PA_IDR_6 PA_IDR:6;volatile _Bool PA_IDR_7 PA_IDR:7;/* Port B data output bits*/volatile _Bool PB_ODR_0
9、PB_ODR:0;volatile _Bool PB_ODR_1 PB_ODR:1;volatile _Bool PB_ODR_2 PB_ODR:2;volatile _Bool PB_ODR_3 PB_ODR:3;volatile _Bool PB_ODR_4 PB_ODR:4;volatile _Bool PB_ODR_5 PB_ODR:5;volatile _Bool PB_ODR_6 PB_ODR:6;volatile _Bool PB_ODR_7 PB_ODR:7;/* Port B data input bits*/volatile _Bool PB_IDR_0 PB_IDR:0;
10、volatile _Bool PB_IDR_1 PB_IDR:1;volatile _Bool PB_IDR_2 PB_IDR:2;volatile _Bool PB_IDR_3 PB_IDR:3;volatile _Bool PB_IDR_4 PB_IDR:4;volatile _Bool PB_IDR_5 PB_IDR:5;volatile _Bool PB_IDR_6 PB_IDR:6;volatile _Bool PB_IDR_7 PB_IDR:7;/* Port C data output bits*/volatile _Bool PC_ODR_0 PC_ODR:0;volatile
11、 _Bool PC_ODR_1 PC_ODR:1;volatile _Bool PC_ODR_2 PC_ODR:2;volatile _Bool PC_ODR_3 PC_ODR:3;volatile _Bool PC_ODR_4 PC_ODR:4;volatile _Bool PC_ODR_5 PC_ODR:5;volatile _Bool PC_ODR_6 PC_ODR:6;volatile _Bool PC_ODR_7 PC_ODR:7;/* Port C data input bits*/volatile _Bool PC_IDR_0 PC_IDR:0;volatile _Bool PC
12、_IDR_1 PC_IDR:1;volatile _Bool PC_IDR_2 PC_IDR:2;volatile _Bool PC_IDR_3 PC_IDR:3;volatile _Bool PC_IDR_4 PC_IDR:4;volatile _Bool PC_IDR_5 PC_IDR:5;volatile _Bool PC_IDR_6 PC_IDR:6;volatile _Bool PC_IDR_7 PC_IDR:7;/* Port D data output bits*/volatile _Bool PD_ODR_0 PD_ODR:0;volatile _Bool PD_ODR_1 P
13、D_ODR:1;volatile _Bool PD_ODR_2 PD_ODR:2;volatile _Bool PD_ODR_3 PD_ODR:3;volatile _Bool PD_ODR_4 PD_ODR:4;volatile _Bool PD_ODR_5 PD_ODR:5;volatile _Bool PD_ODR_6 PD_ODR:6;volatile _Bool PD_ODR_7 PD_ODR:7;/* Port D data input bits*/volatile _Bool PD_IDR_0 PD_IDR:0;volatile _Bool PD_IDR_1 PD_IDR:1;v
14、olatile _Bool PD_IDR_2 PD_IDR:2;volatile _Bool PD_IDR_3 PD_IDR:3;volatile _Bool PD_IDR_4 PD_IDR:4;volatile _Bool PD_IDR_5 PD_IDR:5;volatile _Bool PD_IDR_6 PD_IDR:6;volatile _Bool PD_IDR_7 PD_IDR:7;/#endif在工程中加入此文件,如下图:在源程序中include此文件,编写位语句,编译通过,如下图:#define LED_GREEN PB_ODR_1 /定义LED_GREEN为PB1口LED_GREEN = High; /PIN LED_GREEN输出高(PB1口)所以,即可以用标准库函数,也可以对寄存器或定义的位直接赋值,增加编程的灵活性。编写:东莞市胜控电子科技有限公司翁慢于石龙2013-1-22
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1