一步步建立STM8S工程项目祥图.docx

上传人:b****4 文档编号:3516162 上传时间:2022-11-23 格式:DOCX 页数:15 大小:928.41KB
下载 相关 举报
一步步建立STM8S工程项目祥图.docx_第1页
第1页 / 共15页
一步步建立STM8S工程项目祥图.docx_第2页
第2页 / 共15页
一步步建立STM8S工程项目祥图.docx_第3页
第3页 / 共15页
一步步建立STM8S工程项目祥图.docx_第4页
第4页 / 共15页
一步步建立STM8S工程项目祥图.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

一步步建立STM8S工程项目祥图.docx

《一步步建立STM8S工程项目祥图.docx》由会员分享,可在线阅读,更多相关《一步步建立STM8S工程项目祥图.docx(15页珍藏版)》请在冰豆网上搜索。

一步步建立STM8S工程项目祥图.docx

一步步建立STM8S工程项目祥图

一步步建立STM8S工程项目

鉴于本人曾经摸索了不少时间,走了很多弯路,为了使新手更好地快速入门,特编写此教程。

本文件期望达到如下目的:

1、从无到有建立全新的STM8S工程项目

2、能调用标准库函数

3、会定义位,懂得如何查找特定的寄存器并直接赋值。

在开始之前,假设你已经安装了STVD和cosmic软件,STVD在ST官网下载,COSMIC到官网或网上可找到评估版或破解版。

首先下载ST标准库,从官网下载,我在网上下载到的压缩文件名是stm8_stdperiph_lib。

可按如下方法下载:

进入STM8S mainstream的resources页,进入Firmware,下载“STM8S/AStandardperipherallibrary”如下图所示:

其次搜索并下载“STM8S库函数中文参考”,对新手省去学习库函数的麻烦。

第一步,打开STVD,File->NewWorkSpace

可选creatworkspaceandproject 创建工程和项目

在新工程框中,输入工程名,先点左边红色框的选择文件夹,然后点新建文件夹并输入名称

确定后填入项目名称,在Toolchain选择所用编译器,本例选cosmic

点击OK后,选中IC型号,双击,再点OK

点击OK,初步工程和项目已经建立,编译通过。

将下载的STM8S标准库stm8_stdperiph_lib解压,如下图,我下载的版本解压后是STM8S_StdPeriph_Lib_V2.1.0文件夹。

打开以上文件夹,如下图目录,从标准库中复制以下三个文件到新建工程项目中:

新建工程文件目录粘贴如下:

将STM8S_StdPeriph_Lib_V2.1.0\Libraries\下的STM8S_StdPeriph_Driver文件夹复制到你刚才建立的工程文件夹里,如下图:

将以上stm8s_it.c和stm8s_conf.h添加到STVD的工程文件夹中,然后将stm8s.h从STM8S_StdPeriph_Driver下的inc文件夹中添加,如下图

双击打开stm8s.h,将所用的单片机型号的注释符号去掉,如下图:

将stm8s_it.c中的INTERRUPT_HANDLER(NonHandledInterrupt,25)函数注释掉,因为重复定义了。

然后编译通过。

在STVD中的project右键NewFolder,建立所需文件夹

建立一个文件夹STM8S_StdPeriph_Driver,如下图:

在STVD中点击STM8S_StdPeriph_Driver右键,添加标准库文件stm8s_gpio.c。

双击打开stm8s_conf.h文件,将如下图所示红色框的定义文件注释掉。

打开STM8S库函数中文参考,下例中设置PA0口

点击复制,将其粘贴到main函数中,并在main.c中添加#include"stm8s.h",编译通过,如下图。

至此一个基本的STM8S工程项目建立完毕。

若需要使用到单片机的其它模块功能,直接按添加stm8s_gpio.c的方法添加,比如要用到time4,则添加stm8s_tim4.c到工程中即可。

以上是使用标准库函数的编写方法,另外可直接使用已经定义好的头文件,直接对寄存器和位赋值设置操作。

到STVD安装目录找到单片机类型的头文件,本例是C:

\ProgramFiles\STMicroelectronics\st_toolset\include中找到STM8S003.h和STM8S103F.h,复制到新建的工程文件夹中,如下两图

一中

在STVD中添加单片机头文件,如下图,本例是stm8s003f3.h和stm8s103f.h,文件中有对特殊功能寄存器的定义。

在main.c文件中加入“#include"stm8s003f3.h"”或“#include"STM8S103F.h"”。

这样就可以直接以单片机头文件定义的寄存器名直接赋值,比如:

为了便于位操作,可另建一个位定义文件,本例是建立stm8s_bitsdefine.h文件名,以下是示例,用户可自行设置添加内容:

#ifndef_MACRO_BITS_DEFINE_H_

#define_MACRO_BITS_DEFINE_H_

/*----------------------------------------------------------------------------*/

//IObitsdefine

/*PortAdataoutputbits*/

volatile_BoolPA_ODR_0@PA_ODR:

0;

volatile_BoolPA_ODR_1@PA_ODR:

1;

volatile_BoolPA_ODR_2@PA_ODR:

2;

volatile_BoolPA_ODR_3@PA_ODR:

3;

volatile_BoolPA_ODR_4@PA_ODR:

4;

volatile_BoolPA_ODR_5@PA_ODR:

5;

volatile_BoolPA_ODR_6@PA_ODR:

6;

volatile_BoolPA_ODR_7@PA_ODR:

7;

/*PortAdatainputbits*/

volatile_BoolPA_IDR_0@PA_IDR:

0;

volatile_BoolPA_IDR_1@PA_IDR:

1;

volatile_BoolPA_IDR_2@PA_IDR:

2;

volatile_BoolPA_IDR_3@PA_IDR:

3;

volatile_BoolPA_IDR_4@PA_IDR:

4;

volatile_BoolPA_IDR_5@PA_IDR:

5;

volatile_BoolPA_IDR_6@PA_IDR:

6;

volatile_BoolPA_IDR_7@PA_IDR:

7;

/*PortBdataoutputbits*/

volatile_BoolPB_ODR_0@PB_ODR:

0;

volatile_BoolPB_ODR_1@PB_ODR:

1;

volatile_BoolPB_ODR_2@PB_ODR:

2;

volatile_BoolPB_ODR_3@PB_ODR:

3;

volatile_BoolPB_ODR_4@PB_ODR:

4;

volatile_BoolPB_ODR_5@PB_ODR:

5;

volatile_BoolPB_ODR_6@PB_ODR:

6;

volatile_BoolPB_ODR_7@PB_ODR:

7;

/*PortBdatainputbits*/

volatile_BoolPB_IDR_0@PB_IDR:

0;

volatile_BoolPB_IDR_1@PB_IDR:

1;

volatile_BoolPB_IDR_2@PB_IDR:

2;

volatile_BoolPB_IDR_3@PB_IDR:

3;

volatile_BoolPB_IDR_4@PB_IDR:

4;

volatile_BoolPB_IDR_5@PB_IDR:

5;

volatile_BoolPB_IDR_6@PB_IDR:

6;

volatile_BoolPB_IDR_7@PB_IDR:

7;

/*PortCdataoutputbits*/

volatile_BoolPC_ODR_0@PC_ODR:

0;

volatile_BoolPC_ODR_1@PC_ODR:

1;

volatile_BoolPC_ODR_2@PC_ODR:

2;

volatile_BoolPC_ODR_3@PC_ODR:

3;

volatile_BoolPC_ODR_4@PC_ODR:

4;

volatile_BoolPC_ODR_5@PC_ODR:

5;

volatile_BoolPC_ODR_6@PC_ODR:

6;

volatile_BoolPC_ODR_7@PC_ODR:

7;

/*PortCdatainputbits*/

volatile_BoolPC_IDR_0@PC_IDR:

0;

volatile_BoolPC_IDR_1@PC_IDR:

1;

volatile_BoolPC_IDR_2@PC_IDR:

2;

volatile_BoolPC_IDR_3@PC_IDR:

3;

volatile_BoolPC_IDR_4@PC_IDR:

4;

volatile_BoolPC_IDR_5@PC_IDR:

5;

volatile_BoolPC_IDR_6@PC_IDR:

6;

volatile_BoolPC_IDR_7@PC_IDR:

7;

/*PortDdataoutputbits*/

volatile_BoolPD_ODR_0@PD_ODR:

0;

volatile_BoolPD_ODR_1@PD_ODR:

1;

volatile_BoolPD_ODR_2@PD_ODR:

2;

volatile_BoolPD_ODR_3@PD_ODR:

3;

volatile_BoolPD_ODR_4@PD_ODR:

4;

volatile_BoolPD_ODR_5@PD_ODR:

5;

volatile_BoolPD_ODR_6@PD_ODR:

6;

volatile_BoolPD_ODR_7@PD_ODR:

7;

/*PortDdatainputbits*/

volatile_BoolPD_IDR_0@PD_IDR:

0;

volatile_BoolPD_IDR_1@PD_IDR:

1;

volatile_BoolPD_IDR_2@PD_IDR:

2;

volatile_BoolPD_IDR_3@PD_IDR:

3;

volatile_BoolPD_IDR_4@PD_IDR:

4;

volatile_BoolPD_IDR_5@PD_IDR:

5;

volatile_BoolPD_IDR_6@PD_IDR:

6;

volatile_BoolPD_IDR_7@PD_IDR:

7;

//…

#endif

在工程中加入此文件,如下图:

在源程序中include此文件,编写位语句,编译通过,如下图:

#defineLED_GREENPB_ODR_1//定义LED_GREEN为PB1口

LED_GREEN=High;//PINLED_GREEN输出高(PB1口)

所以,即可以用标准库函数,也可以对寄存器或定义的位直接赋值,增加编程的灵活性。

编写:

东莞市胜控电子科技有限公司 翁慢于石龙

2013-1-22

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1