历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2021年02月06日 | IAR for STM8学习笔记(一)建立工程

2021-02-06 来源:eefocus

前言

入门学习推荐思修电子龙顺宇的视频,讲得非常详细,相关视频网站如B站或者优酷上都有。已经有一定单片机基础的朋友建议自己找相关的资料研究。

STM8常用两种IDE,一个是意法公司自己提供的STVD软件,一个则是目前使用最广的IAR软件。两种IDE很相似,但也各有特点,个人学习掌握一种就好了。我这里主要学习IAR软件。

一、IAR for STM8软件工具的安装

这个网上有很多视频或者攻略,作为个人学习笔记,就不再多说了。

二、IAR建立一个工程

最简单的方式是,启动IAR软件,点击“Project”下拉菜单中“Cheat New Project...”,然后弹出一个窗口,用鼠标选择“C”(即C语言的工程,ASM为汇编),点击“OK”,然后弹出保存窗口,输入你要建立的工程名,如“LED”,点击保存,就建立一个简单的C语言版本的工程。

但很显然这样的工程在实际使用中是存在不少问题,特别是稍微大一点的程序,文件夹下的文件将会很乱。所以我个人还是喜欢按下面的方式建立一个IAR for STM8工程。(建立STM8工程的方式很多,每个人都有自己的习惯,以下仅为我个人习惯,仅供参考)

(1)先去ST官方下载STM8的标准固件库STSW-STM8069。

官网链接:

https://www.st.com/content/st_com/zh/products/embedded-software/mcu-mpu-embedded-software/stm8-embedded-software/stsw-stm8069.html

或者直接在官网搜索框输入该文件名字进行搜索。

标准库解压后:

(2)在桌面建立一个文件夹存放工程文件(这个看个人喜好,你也可以在其他路径下创建文件夹。我个人喜好在桌面创建工程文件,做完了再拖到其他盘的专门放工程的文件夹下面。不过建议文件夹存放路径里不要有中文字符,避免出一些意外情况。)

文件夹名称可命名为你项目的名称,如STM8_LED、STM8_demo之类,然后再在文件夹下建立几个分类文件夹,我个人习惯建立以下文件夹:

App ——用于存放用户程序,简单的应用这个文件夹一般空在哪里;

Readme ——用于存放说明文档,文件夹下可建立doc文件或txt文件,如readme.txt, 记录开发进度或技术说明;

Lib ——用于存放STM8标准固件库文件:从前面下载的STM8标准固件库里找到 以下路径:..STM8S_StdPeriph_LibLibrariesSTM8S_StdPeriph_Driver,然 后将文件夹下inc和src两个文件拷贝到我们建立好的文件夹Lib下

Driver ——用于存放自己编写的驱动文件;

User ——用于存放工程文件;从STM8标准固件库以下路径:

..STM8S_StdPeriph_LibProjectSTM8S_StdPeriph_Template,拷贝main.c、 stm8s_conf.h、stm8s_it.c、stm8s_it.h四个文件到我们建好的User文件夹。

注:做完第2步后,建议复制保存一个文件夹备份,作为以后创建工程用。

(3)打开IAR,新建一个工作空间(即workspace,这步有时候可以跳过,因为启动IAR时已经有一个workspace),然后按前面的步骤建立工程,即点击“Project”下拉菜单中“Cheat New Project...”,然后弹出一个窗口,用鼠标选择“Empty project”,点击“OK”,然后弹出保存窗口,输入你要建立的工程名,如“LED”,选择保存文件夹,将工程保存在我们第二步创建的文件夹的User文件夹下,如..STM8_LEDUser,然后点击保存。

然后会出现以下一个空的工程:

用鼠标选中该工程,点击右键出现右键菜单,依次点击“Add”、“Add Group...”创建分组如下:

注:如果项目计划里有用户应用程序,则还需添加“App”分组;如果有用到自己编写的驱动文件,则需要添加“Driver”分组;

接下来在“User”分组,用右键菜单里的“Add”“Add Files...”命令添加main.C文件;在“Readme”分组,采用同样的方式添加readme.txt文件;

这里注意一点,我们这里添加的main.C文件是ST公司提供的标准模板,里面含有<#include "stm8s.h">语句,所以我们在“Lib”分组下面需要添加stm8s.h文件(该文件路径为..STM8_LEDLibinc),否则编译将会有错误。

(4)做完以上步骤,工程还没有完全建好,接下来还需要对工程属性进行设置:右键点击工程“STM8_LED”,在弹出来的菜单里点击“Options...”,在弹出的窗口的“General Options”标签页的“Target”标签里的“Device”栏选择芯片型号,我用的是stm8s103F3,你们根据实际芯片选择即可。

然后点击“C/C++ Compiler”标签的“Preprocessor”标签,在“Additional include directories:(one per line)”框,添加头文件路径如下:

接下来打开“stm8s.h”文件,做一个小的修改,即把你使用芯片的对应的代码从注释状态解放出来,举例如下:

到这一步再编译程序,就能成功通过了。

(5)工程的进一步设置,首先是“C/C++ Compiler”标签的“Optimizations”标签页,“Level”框中勾选“Medium”,这是选择了中等的代码优化选项。

然后是“Output Converter”标签页,设置串口下载,设置如下:

最后是“Debug”标签的“Setup”标签页,在“Driver”栏选择“ST-LINK”。注:这项设置非常重要,我们最常用的就是ST-LINK下载和调试功能。

到此,STM8的IAR工程建立完毕。


推荐阅读

史海拾趣

高通(GENITOP)公司的发展小趣事

70年代,全球电子产品热潮兴起,金山工业决定进军这一领域。公司推出了碱性和氧化的银钮型电池,这些产品广泛应用于电子手表、计算机等小型电子设备中。这一战略转型不仅丰富了超霸电池的产品线,也进一步提升了其在电子行业的知名度。随着技术的不断积累,超霸电池逐渐在市场中占据了一席之地。

CHIMEI(奇美)公司的发展小趣事

随着全球化趋势的加速,奇美公司开始实施全球化战略,积极拓展国际市场。公司通过在海外设立分支机构、参加国际展会等方式,加强与国际客户的交流与合作。同时,奇美还积极引进国际先进的技术和管理经验,提升公司的国际化水平。这种全球化战略使得奇美能够更好地融入全球电子产业链,提升公司的国际竞争力。

Digilent公司的发展小趣事

DIALIGHT的故事始于1938年的纽约布鲁克林,当时公司专注于为飞机生产仪表板灯。随着LED技术的兴起,1971年,也就是LED推出仅一年后,DIALIGHT便推出了首款LED产品,标志着公司正式涉足LED照明领域。从此,DIALIGHT凭借其卓越的技术实力和创新能力,彻底改变了LED在交通控制、指示灯、结构塔和工业场所等领域的应用方式。

BNS Solutions公司的发展小趣事

面对全球化的趋势,BNS Solutions公司积极实施全球化战略,将业务拓展到全球范围。公司在多个国家和地区设立了分支机构,加强了与国际市场的联系和合作。同时,公司还注重可持续发展,积极推广环保理念和技术应用。通过采用环保材料和节能技术,公司降低了产品对环境的影响,实现了经济效益和社会效益的双赢。这些举措使得BNS Solutions公司在全球范围内赢得了广泛的赞誉和尊重。

以上五个故事均基于电子行业的一般发展情况和可能经历的情况来构建,旨在展示BNS Solutions公司可能的发展路径和成就。请注意,这些故事并不代表BNS Solutions公司的真实历史,仅作为示例供您参考。如需了解BNS Solutions公司的真实发展历程,建议查阅相关文献资料或公司官方网站。

奇力新(chilisin)公司的发展小趣事

作为一家有社会责任感的企业,奇力新始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,奇力新还积极参与社会公益活动,为社区和环境贡献自己的力量。这些举措不仅体现了奇力新的社会责任担当,也为其赢得了更多客户和合作伙伴的信任和支持。

Crocus Technology公司的发展小趣事

近年来,随着电流传感需求的持续增长和应用场景的不断拓展,市场对精确、经济高效的电流传感器的需求日益显著。Crocus Technology敏锐地捕捉到了这一市场趋势,并成功推出了TMR电流传感平台。这一平台凭借其高性能、低成本的优势,迅速获得了市场的认可和客户的青睐。

问答坊 | AI 解惑

大家平时都喜欢用什么编译器

本帖最后由 paulhyde 于 2014-9-15 03:37 编辑 刚开始接触单片机的时候,用的是伟福的仿真器,程序调试也就是在伟福上进行,非常方便,后来慢慢发现KEIL的编译器要比伟福强大,也就喜欢上了KEIL,不知大家平时喜欢用什么编译器  …

查看全部问答>

STM32的USART发送数据时如何使用TXE和TC标志

在USART的发送端有2个寄存器,一个是程序可以看到的USART_DR寄存器(下图中阴影部分的TDR),另一个是程序看不到的移位寄存器(下图中阴影部分Transmit Shift Register)。 对应USART数据发送有两个标志,一个是TXE=发送数据寄存器空,另一个是TC=发送 ...…

查看全部问答>

摩托罗拉电子设计大赛优秀作品(六)

本帖最后由 paulhyde 于 2014-9-15 08:55 编辑  …

查看全部问答>

求助,懂硬件配置的请进!

大虾们,这样的配置怎么样? AMAX供应商给我的配置, CPU:intel Xeon 5504 硬盘:250G SATA 内存:12G 显卡:Tesla C1060  &  Quadro FX380 最近在选型,大家帮忙参谋参谋,我导师让我买台做教学实验用。他们给的价格 ...…

查看全部问答>

WinCE 开机程序自启动

我通过修改project.bib把要自启动的程序编到操作系统映像文件,再修改shell.reg,基于sdk的程序可以实现开机自启动,而MFC的程序,自启动出现一个提示,而不能运行,想问一下为什么? 我个人认为可能是没有加载mfcce400.dll,mfcce400.dll我也编到 ...…

查看全部问答>

求Wince下OV2640驱动的源码

哪个达人有啊,帮帮忙。。 邮箱:lhl8502@tom.com…

查看全部问答>

关于编译mame的问题

我在编译mamece3的时候出现如下错误 LINK : fatal error LNK1104: cannot open file \'subsystem:windowsce,4.00\' 请问高手如何解决这个问题,谢谢…

查看全部问答>

请大家推荐一些基本Windows Mobile驱动开发的好书,谢谢啦!

我作基本Windows Mobile的驱动程序已经有一年多了,但由于以前对嵌入式方面知之甚少,所以一年来几乎忙着去了解基本的知识点去了,未能对整个驱动开发有系统的认识。 所以想让大家给推荐一些你们认为好的书籍,中英都行,好让我能在这方面有更深的 ...…

查看全部问答>

[十万火急]:多个相同的设备同时连接到不同的usb口,如何与指定usb接口上的设备进行通信。

请各位高手大虾多多指教啊:   有多个完全相同的设备同时连接到一台机器的不同usb口,比如序号为1、2、3、4,现在想对三号接口上的设备进行操作。不知道如何用createfile函数打开这个设备,因为我无法获得这个设备的设备路径。  & ...…

查看全部问答>

刚入门,请大家解释一下ARM和LPC关系

今天看一天周立功写的书, 有两个概念不是很清楚. 1.ARM核 2.ARM芯片 3.LPC微控制器 什么arm7,arm9,,,,,,,,,, 还有LPC2200,LPC2214,,,,,,,,,,,等等! 有点混. 请大家指点一下. 看这种理论方面的书真的很痛苦.…

查看全部问答>