历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2020年01月23日 | stm8环境搭建及编译第一个工程

2020-01-23 来源:eefocus

准备:

开发软件:IAR for stm8 


固件库:STSW_STM8069_STM8S和STM8A标准外设固件库


实验步骤

1.下载IAR for stm8 ,当进入到IAR官网时(点击上方IAR for stm8链接),显示界面大概如下:

把网页拖到最下面看到下图,点击 download a free trial 将会拉出一个下载按键,这个显示的IAR版本是最新的。本人目前看到的版本为3.10。

下载完成后,根据以往的方式进行安装,然后通过IAR破解工具将其破解。破解目前网上很多随便下载。当然本人自己也提供了下载链接 https://download.csdn.net/download/fangjiaze444/10944375 。


2.下载固件库,链接已经在上面已经超链接了。将STSW_STM8069_STM8S和STM8A标准外设固件库下载下来后。就可以开始我们的工程了。


打开IAR for stm8,新建一个工作空间,点击file菜单,再点击new workspace,然后再保存该工作空间指定到你要开发的工程目录中。比如我们在F:STM8_test目录下保存该工作空间,因此电机file菜单,再点击save workspace as。。指定到该目录。

填写文件名为helloworld,点击保存。这样就生成下面的工作空间。

接下来就在该空间目录下创建工程,点击Project菜单,再点击create new project,得到如下图:

在project templates里面选择 c 选项然后再点击ok,同样得到如下图,名字也可以写成helloworld,当然你要想写别的名字都行。填好名字直接保存到该工作空间即可。

此时该工程的结构如下:

可以看看该工程目录大致的样式如下:

这个时候就可以添加固件库了。如果为了整个工程相对干净整洁,可以模仿我的目录结构。


首先,从上文已经拿到了stm8开发库,库目录结构如下:

我们直接进入libraries,再进入STMS_StdPeriph_Driver,得到如下结构:

inc目录内包含库的所有外设驱动函数的头文件,src目录内包含对应的c原文件。我们把这两目录的父目录复制到我们的工程目录中,得到工程结构如下:

然后我们还需要工程相关的配置头文件及c文件,退后到固件库的主目录,然后进入到project

example是api使用的例程,可以作为参考,而我们需要的文件在Template里面,进入它。把里面的main.c,stm8s_conf.h,stm8s_it.c和stm8s_it.h复制出来到我们的工程,我们的工程可以新建一个USER目录,再粘贴进去,得到如下:

由于USER是在固件库拿来的main主程序文件,因此我们需要把工程下默认生成的main.c文件去掉,之后再导入文件工程时替换掉原来的main.c文件,去掉工程目录的main.c之后,工程结构如下:

之后就需要在IAR上导入文件工程了,首先先把默认的main.c文件remore掉,右键该文件即可删除。


之后再添加组,这里我们添加了LIB和USER两个组。

得到结果如下:

之后再右键LIB组,添加我们的库的API的C文件。右键LIB,如下:

选择到如下 工程目录STM8S_StdPeriph_Driversrc,添加里面所有的c文件。点击ctrl+A快捷键即可全部添加

点击打开即可得到如下:

再右键USER组添加目录USER下的所有文件:

之后工程组结构如下:

接下来就进入到配置环节,虽然我们把必要的文件加进来了,但是由于这些驱动文件能够通用各个stm8的任何系列的芯片,因此少不了option配置。废话少说,直接右键工程进入options

我们选择一些芯片的系列。假如我选择stm8s003f3,得到如下:

之后,进入c/c++ Compiler,然后点击Preprocessor选项,得到如下:

在additional include directories下添加我们需要编译的头文件的目录,只要是需要的头文件,他的路径必须加进来,否则编译会找不到对应头文件。添加结果如下,因为目前就只有这两目录有头文件。

当然为了方便移植,我们通过环境变量来录入我们的头文件路径。下面是如何操作修改成环境变量的。

得到结果如下:

接下来直接编译该工程了,发现报了很多错,该错误告诉我们,我们还需要选择一个目标。

跟踪这个错误,点击该错误看它。

说明我们需要添加一个宏,既然我选择了STM8S003f3,所以根据它列出来的选项,我选择了SMT8S003,因此在main主程序上可以添加 #define STM8S003 这一行,当然IAR本身就已经自带options里配置添加宏的栏框,故我们直接在options上添加,如下图:

点击ok再编译,此时可能会弹出各种未定义:

原因很简单,由于stm8s003的外设资源比较少,故该sdk就会通过我们刚刚添加的宏来屏蔽一些外设,这将导致一些外设c文件将编译不通过,因此,我们只需要把没编译通过的外设从工程中移除就ok了,下图可以看到有些文件后边多了个红点。

说明这些多了个红点是刚刚未编译通过的文件。把这些文件移除掉,一样右键要移除的文件,点击remove即可。移除之后剩下的结构如下:

看样子文件比刚刚少了一些,然后再编译该工程,得到如下图:

此时,上图编译日志显示的是0错误0警告。说明工程已经建立完成了。有什么异议希望能在评论下指点我错误的做法。


推荐阅读

史海拾趣

Heraeus公司的发展小趣事

Heraeus公司作为一家历史悠久的德国化学与科技公司,在电子行业的发展过程中积累了众多令人瞩目的故事。以下是五个与Heraeus公司在电子行业中发展起来的相关故事,每个故事均基于事实描述:

1. 从黄金冶炼到电子科技的转型

Heraeus始建于1851年,最初专注于黄金冶炼,这一历史深厚的背景为其在科技领域的拓展奠定了坚实的基础。随着电子工业的兴起,Heraeus敏锐地捕捉到了市场变化,逐步将业务扩展至电子科技领域。这一转型不仅展示了Heraeus的战略眼光,也体现了其在材料科学和技术创新方面的深厚底蕴。通过不断研发新技术、新产品,Heraeus在电子元件、特殊包装和传感器等领域取得了显著成就,成为电子行业的重要供应商之一。

2. 精密精细加工材料的突破

在电子科技领域,Heraeus以其精密精细加工材料而闻名。这些材料在制造高性能电子元件中发挥着关键作用。例如,Heraeus的薄膜材料在半导体封装、电路板制造等方面得到了广泛应用。为了不断满足市场需求,Heraeus投入大量资源进行技术研发和产品创新,成功推出了一系列具有自主知识产权的高性能材料。这些材料不仅提高了电子产品的性能和质量,也推动了整个电子行业的发展。

3. 全球化布局与本地化服务

作为一家全球领先的科技公司,Heraeus在全球范围内拥有广泛的分支机构和服务网络。为了更好地服务本地客户,Heraeus在不同国家和地区设立了研发中心和生产基地,以提供更加贴近市场需求的产品和服务。在中国市场,Heraeus自1974年在香港设立机构以来,不断加大投资力度,扩大业务规模。目前,Heraeus在大中华区拥有多个生产和办公场所,为众多中国客户提供了优质的产品和服务。这种全球化布局与本地化服务的策略使得Heraeus能够在全球范围内保持竞争优势。

4. 技术创新与可持续发展

Heraeus始终将技术创新作为企业发展的核心驱动力。在电子科技领域,Heraeus不断推出新技术、新产品以满足市场需求。同时,Heraeus也注重可持续发展和社会责任。公司通过优化生产流程、提高资源利用效率等措施减少对环境的影响;积极参与慈善活动和社会公益事业;倡导环保理念并推动行业绿色发展。这些举措不仅提升了Heraeus的企业形象和社会声誉,也为其在电子行业的长期发展奠定了坚实的基础。

5. 应对行业挑战与机遇

近年来,电子行业面临着诸多挑战和机遇。一方面,全球市场竞争日益激烈,技术更新换代速度加快;另一方面,新兴技术的发展为电子行业带来了新的增长点。面对这些挑战和机遇,Heraeus凭借其深厚的技术积累和市场洞察力,不断调整战略方向、优化产品结构、提升服务质量以应对市场变化。同时,Heraeus也积极寻求与产业链上下游企业的合作机会以实现共赢发展。这些努力使得Heraeus在电子行业中始终保持着领先地位并不断向前发展。

EPT公司的发展小趣事

EPT公司在其发展历程中,始终重视与科研机构的合作。早年间,EPT与哈尔滨工业大学共同研发了一种新型电池材料,这种材料具有更高的能量密度和更长的循环寿命。通过双方的技术交流和深度合作,EPT成功将这种材料应用到其产品线中,极大地提升了产品的竞争力。这一合作不仅为EPT带来了技术上的突破,也为其在电子行业树立了良好的口碑。

Fedco_Batteries公司的发展小趣事

Fedco_Batteries的创始人李先生,在电子产业蓬勃发展的年代,看到了电池领域的巨大潜力。他凭借对技术的热爱和对市场的敏锐洞察,决定投身电池制造行业。创业初期,公司面临着资金短缺、技术瓶颈等重重困难。然而,李先生带领团队日夜兼程,不断研发新型电池技术,最终成功推出了一款性价比高、性能稳定的电池产品,打开了市场的大门。

Advanced Optoelectronic Technology Corp公司的发展小趣事

随着产品线的不断扩展,AOTC开始进军国际市场。公司积极与各大电子厂商合作,将光电转换器集成到各类电子产品中,从而实现了市场份额的快速增长。同时,公司还不断投入研发,对产品进行升级迭代,以满足市场不断变化的需求。

Amphenol Thermometrics公司的发展小趣事

随着产品线的不断扩展,AOTC开始进军国际市场。公司积极与各大电子厂商合作,将光电转换器集成到各类电子产品中,从而实现了市场份额的快速增长。同时,公司还不断投入研发,对产品进行升级迭代,以满足市场不断变化的需求。

Clever Little Box公司的发展小趣事

Clever Little Box深知,优质的客户服务是企业长期发展的关键。因此,公司始终注重提升服务质量,为客户提供专业的技术支持和售后服务。同时,公司还注重与客户建立良好的关系,通过定期沟通、反馈收集等方式,了解客户的需求和意见,以便更好地满足客户的期望。

问答坊 | AI 解惑

中国IC产业销售收入规模及增长趋势

中国IC产业销售收入规模及增长趋势 2006-7-11     2006年第一季度,我国集成电路产业全行业共实现销售收入总额214.88亿元,同比增长54.8%。 …

查看全部问答>

基于PXA255的ARM Linux操作系统移植

摘要: Linux在嵌入式领域中应用越来越广泛,已成为最有潜力的嵌入式操作系统。操作系统的移植是进行嵌入式应用开发的前提和基础。ARM Linux是一种针对ARM体系结构的Linux操作系统。本文以新一代高端嵌入式处理器PXA255为例,进行ARM Linux的移植, ...…

查看全部问答>

请教各位前辈!!!

我是一名在校大学生,想问一下,现在Multisim 8这个电路设计软件怎么样?在实际工作中运用的多不多?本人想好好学一学!是否有这个必要?也请各位推荐下好的教程!!!…

查看全部问答>

CPES-IBM未来通信电源功率架构

CPES-IBM未来通信电源功率架构…

查看全部问答>

小车控制算法研究 高手大牛 来说说思路

车图 跑道 现在  要控制车子速度 通过一个舵机控制车头转动方向 转动的方向由前面的红外传感器检测到跑道的识别码得到 但是检测的识别码只可能尽量的和实际吻合但仍会有几度的误差 有时甚至会更多 程序会不停的扫描道路得到识 ...…

查看全部问答>

下载wince5.0内核液晶不亮,但wince4.2正常

我用的是QQ2440板子,液晶屏是FriendlyARM 8.4\'\'LCD,我将光盘自带的wince4.2的nk.bin下载后,液晶屏正常显示,但是换成wince5.0的nk.bin液晶屏却是黑屏,刚开机时能隐约看到5.0的界面,但慢慢就变黑了,哪位知道原因。对液晶屏的供电是3.3V和5V ...…

查看全部问答>

嵌入式问题

题目如下: 设计一个针对某一具体应用的嵌入式系统 要求:1有完整的系统设计方案 2对系统方案有完整说明 3有相应的印制版图 4有完整的系统调试方案 5软件流程及其说明 急 麻烦高手指点迷津 谢谢…

查看全部问答>

双网卡热备份(双网卡冗余备份)如何设计与实现呢(2)?

你好?WIN2000下,以太网网络,双网卡热备份,也就是一个网卡坏了,另一个冗余网卡热切换,两个网卡同一个IP地址,实现方案是什么?使用哪些工具,技术?代码是什么?请问做双网卡热备份,是不是在ndis的例子PASSTHRU的代码基础上,修改即可?怎么修改?希望不 ...…

查看全部问答>

求助:USB HID设备无法访问题

我在做一块usb声卡,这是一个USB Composite Device,Firmware写完了,现在想做pc host的app,要对HID的endpoint4写数据,打开设备的时候能得到设备路径,但是无法读写,部分代码如下。     //Open the USB device     char c ...…

查看全部问答>

类CPdd16550中m_dwWaterMark是用来干什么的?

类CPdd16550中m_dwWaterMark是用来干什么的? 是波特率的mark呢还是安全相关的mark? 有劳各位!…

查看全部问答>