STM8S开发环境编译方法
- 格式:docx
- 大小:3.21 MB
- 文档页数:13
不知是心血来潮,还是其它因素,突然又想起玩汇编语言了。
这几年也没少跟单片机打交道,包括51系列,430系列,ARM系列,但都是用C语言来开发。
不过由于使用C语言,实际上对这些CPU的了解还是不够深刻,当然除了51之外,因为那是我多年前曾经用汇编开发过的芯片。
尽管当今C语言已经在嵌入式产品的开发过程中成为主流,但我个人依然认为,要想真正了解CPU的特点,还得用汇编语言。
不知道这种观点是对还是错,也许是因为自己从硬件做起,写过机器码,用汇编语言做过优化,因此对汇编语音有一种特殊的偏爱。
51系列的芯片用多了,感觉有时写起程序来不太方便,因此总想寻找一些其它的8位单片机玩玩,正好手头有一个ST的三合一开发板,那是09年参加ST研讨会上买的,一直躺在那里,与其躺在那里,不如拿出来玩玩。
这几年,ST在国内推广STM32,力度不小,不过我一直没有用过,只是初步地看看资料。
原因在于在32位单片机方面,我一直在用Luminary公司的LM3S1138,感觉不错,一直都很顺利。
09年ST举办的研讨会上,ST除了介绍STM32外,也介绍了STM8,当时听了以后,觉得还行。
尤其是会上的低功耗演示给我留下了很深刻的印象。
基于这些,我决定好好地玩一下STM8芯片,并将玩的结果拿出来与大家共享。
STM8与汇编语言(2)第一次打开STM8的手册时发现,CPU中的寄存器只有6个,即A、X、Y、SP、PC 和CC。
这几个寄存器,看上去特象早年苹果机使用的微处理器6502。
在眼下都是多寄存器的RISC潮流下,不知ST推出的这种CPU架构有什么意图?这样的芯片能否与Microchip 或者Atmel的RISC结构的MCU竞争呢?在此我无意做评论,我只想了解这颗芯片。
通过仔细研究,我发现由于STM8采用了32位宽度的程序存储器结构,使得大部分的指令都能在一个周期内取出,并且采用了哈佛结构和流水线,相当多的指令也都是单周期完成的。
这样的话,虽然CPU是CISC架构的,但也基本上达到了单周期指令的效果,就像手册上说的,CPU的性能达到了20MISP◎24MHZ。
stm8开发环境配置及测试需要准备的软件,硬件,IAR for stm8 (EWSTM8)、stm8s标准固件库、ST-LINK、STM8s003f3核⼼板安装IAR(其中包括st-link的驱动),使⽤IAR新建⼀个⼯程,具体步骤如下:1,File->New->Workspace2,创建⼀个⼯程:Project->Create New Project...3,在弹出的对话框中选择C,-》OK4,根据提⽰保存你的⼯程5,从stm8s标准固件库中复制Libraries⽬录到你的⼯程⽬录,复制\STM8S_StdPeriph_Lib_V2.1.0\Project\STM8S_StdPeriph_Examples\GPIO到你的⼯程⽬录6,IAR的⼯程配置:在⼯程中添加两个组Libraries,MyApp。
右击你的⼯程->Add->Add Group7,将库中的*.c⽂件和主程序⽬录的*.c⽂件分别添加到Libraries, MyApp;右击相应组->add->add files8,选择单⽚机型号:右击你的⼯程Options->General Options->选择你单⽚机的型号9,配置头⽂件搜索路径:上⼀步切换到C/C++ Complier->Preprocessor->Additional include directory: ( one per line)10,选择调试器:切换到Debugger->Driver选择ST-Link->OK现在开始编译拍错1,右键main.c->Comliper会提⽰保存workspace,按提⽰操作,编译中会提⽰没有定义Fatal Error[Pe035]: #error directive: "Please select first the target STM8S/A device used in your application (in stm8s.h file)" C:\Documents and Settings\Administrator\桌⾯\EWSTM8_turial\Libraries\STM8S_StdPeriph_Driver\inc\stm8s.h 65双击该条提⽰,⾃动定位到错误位置,表⽰没有定义单⽚机型号,定义上#define STM8S003F32,再次执⾏1,这次的提⽰变为Error[Pe020]: identifier "GPIOH" is undefined C:\Documents and Settings\Administrator\桌⾯\EWSTM8_turial\GPIO\GPIO_Toggle\main.c 54双击该提⽰,定位到错误位置,向上找到 #define LED_GPIO_PORT (GPIOH)将GPIOH改为GPIOD(STM8S003F3没有GPIOH这个IO)3,再次执⾏1,OK没有错误4,整体编译⼀遍:右击⼯程->Make.在编译过程中有⼀部分⽂件会报错,不要担⼼,这些是STM8S003F3中没有的资源,将报错的⽂件删除即可另外对固件库了解后,可以只添加需要的部分,⽐如这次使⽤的是stm8s_gpio.c,那么只添加stm8s_gpio.c就可以了5,删除不需要的,再编译:OK没有错误,没有警告下载并调试,1,将STM8核⼼板通过SWIM与ST-Link连接起来,注意线序2,将ST-Link连接到电脑,(在设备管理器中usb总线中会看到ST-link的相关信息)3,给stm8核⼼板加电4,点击IAR的Download and debug,点击Go。
利用ST Visual Develop创建STM8S工程
1.新建一个文件夹,用来保存代码文件和编译生成的各种文件;
2.打开ST Visual Develop 点击File选择New Workspace
3.弹出下图中的对话框,在Workspace filename填入所要的工程名,可以和创建的文件夹
不同名,在worksapce location中选择刚才所创建的文件夹,点OK;
4.点OK后弹出新的对话框,如下图:
如红色字提示设置好之后,点OK;
5.点OK后弹出芯片选择对话框;
找到对应MCU后双击选择,点OK后完成工程创建;
6.工程创建后ST Visual Develop中的workspace 视图如下;
自动生成了main.c文件和中断文件,接下来要在include Files中添加相应芯片头文件;
7.include Files中添加相应芯片头文件:
在Include Files上右键,选择Add Files to Folder
在ST Visual Develop安装文件夹下的include文件夹中选择相应芯片头文件
至此工程创建和编译环境配置完成。
――from 时光祭司。
stm8s 开发(一)使用IAR 新建工程
新建工程是第一步!
a)创建一个Workspace
首先,创建一个workspace。
选择菜单FileNewWorkspace
b)创建一个Project
1)创建一个新的工程,选择ProjectCreateNewProject,创建新工程的对话框,如下2)Toolchain默认是STM8Series。
无需再选择。
3)在Projecttemplates中选择“Emptyproject”
4)弹出SaveAs对话框,选择project保存的路径,并输入project的名字
5)在添加文件到工程中之前,先保存workspace。
选择FileSaveWorkspace,指定要保存的路径,并输入workspace的名字。
一个workspace文件的扩展名是eww.此文件列出了添加到workspace中的所有的project。
相关当前会话信息,比如windows的保存路径和断点保存于
projects\setttings目录下。
c)添加文件和组到工程
可选择ProjectAddFiles选择要添加的C文件。
找到相应的文件。
可选择ProjectAddGroup新建组。
d)工程选项配置
选择ProjectOptions,或者在Workspace窗口,选中project名字,右击选择选择“Options…”
1)在Category中,选择“GeneralOptions”,如2)在Category中,选择C/C++Compiler,显示compiler选项页
这里可以设置编译的优化,一般选择Low级别,若选用High级别的话,。
ST单片机STM8S开发入门教程最近ST在国内大力推广他的8位高性价比单片机STM8S系列,感觉性能上还是非常不错的,网上稍微看了点资料,打算有机会还是学习一下,先入门为以后做好技术积累。
好了,长话短说。
手上拿到一套ST最近做活动赠送的三合一学习套件,上面包括STM32F小板、ST LINK小板、STM8S小板,做工很精致,相信很多朋友也收到了。
既然当初去申请了,人家也送了,总得把用起来吧,放着吃灰尘是很可惜的^_^ 。
好,步入正题,刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚。
偶的电脑光驱坏了,所以也读不出光盘里有什么东西,所以只能到处瞎摸,还是ourdev论坛好,嘿嘿,仔细看了几个帖子,总算明白大概是什么样的开发环境了。
用C语言开发STM8S,需要安装两个软件:1、STVD IDE开发环境;2、COSMIC for STM8 C编译器。
STVD可以到官网下载,下载地址:COSMIC 需要申请LICENSE,比较繁琐,刚好坛子有人传了一个免安装无限制版本的,偶就赶紧下载了,大家可以去下载,仅做为个人学习使用。
下载地址:软件下载后,只需安装STVD。
从上面地址下载的COSMIC不用安装,只要解压到硬盘即可。
后面建立工程的时候设置好路径即可。
下面一步一步开始啦~一、安装好STVD后,桌面上建立了两个快捷图标,ST Visual Develop就是STVD了。
ST Visual Programmer是编程软件,可以配合ST LINK对STM8S进行编程烧录。
二、双击运行ST Visual Develop,启动STVD开发环境。
执行Workspace,在New Workspace 窗口里选择Create workspace and projects,点击“确定”建立工作组和工程三、在Workspace 里输入Workspace名称,由于最终我们要测试一个现成的LED程序,所以偶写了led,随你喜欢了,呵呵。
STM8 开发环境、最小项目工程、最小系统一、STM8开发环境要使用STM8需要下载下列工具:1、ST 8bit MCU通用集成开发环境- ST Visual Develop/stonline/products/support/micro/files/st7toolset.exeIDE包含代码编辑、汇编编译器、代码调试功能,不含C编译器。
同时IDE还自带ST Visual Progra mer编程软件,支持主流8bit2、COSMIC C Compiler for STM8 16K Limited免费的16K代码限制C编译器。
运行ST Visual Develop(STVD) 集成开发环境,通过菜单栏Files -> New WorkSpace我们可以新建一个新的STM8工程。
(原文件名:1.jpg)在弹出的“New WorkSpace”对话框中,我们可以STVD支持的集中工程模版类型。
这里我们选择使用“Create workspace and project”。
(原文件名:2.jpg)WorkSpace是Project的管理平台,允许在一个WorkSpace中出现多个Project,通过设定我们可以选择当前的活动项目。
(原文件名:3.jpg)输入当前要建立的项目名称,并且可以根据应用的需要通过“Project location”来选择更改WorkSp ace存放路径。
因这里介绍的例程我们需要支持的MCU平台是STM8系列,C语言使用COSMIC,因此我们还需要对使用的Toolchain进行选择。
(原文件名:4.jpg)下一步我们要选择工程使用的MCU型号。
(原文件名:5.jpg)在对话框中我们可以看到当选中一个MCU型号,在右边的工具列表清单中会显示调试工具支持状态,绿色表示工具可以支持,灰色表示不支持。
这里仅是提供调试或仿真支持,不表示编程支持,具体编程支持需要通过STVP编程软件确认。
STM8S做IAP一:环境与平台MCU:STM8S005K6集成开发环境:STVD开发方式:库开发芯片内部存储”偷窥”软件Smart PRO 2008二:在RAM中运行代码0.在STM8s.h中将#define RAM_EXECUTION (1)的注释去掉,以使用RAM功能.1. 利用编译器函数#pragma section (FLASH_CODE) , #pragma section () 对函数void FLASH_ProgramBlock(Num,PROG, FAST ,Buffer);进行声明.FLASH_CODE是声明的这段代码的名字,可以自己随便取.同时函数用IN_RAM包括.举例代码如下:#pragma section (FLASH_CODE)IN_RAM(void FLASH_ProgramBlock(Num,PROG, FAST ,Buffer)){Num=PROG+ FAST +Buffer;}#pragma section ()2.声明编译器函数int _fctcpy(char name);3.在函数FLASH_ProgramBlock运行前时,利用编译器函数int _fctcpy(char name)将函数FLASH_ProgramBlock复制到RAM中.形参char name是指要复制的代码段名字的首字母.此例中要复制的代码段名为FLASH_CODE.所以应该写成: _fctcpy('F');4.在STVD软件, project工程, seting设置, linker链接器, Gategory , Input , RAM 栏中添加要在RAM中运行的代码" . FLASH_CODE"名, 并在option中输入"-ic".具体见图片.如果出现没有" . FLASH_CODE"的默认位置这样的错误,说明这步没有处理好.三:STM8S的中断特性1 把APP的中断向量表地址改成0xa300 , Flash地址改成oxa380 , 之后程序不能执行.把APP的中断向量表地址改成0x8000 , Flash地址改成oxa380 , 之后程序就能执行.是因为一上电STM8S就读取0x8000-0x8003的复位地址,以实现复位,但找不到. 这异常与复位中断有关,STM8S读取中断向量表的地址只能是0x8000到0x8080.谁的复位函数地址处在0x8000,就复谁的位.复位就是跳转主函数开始地址的意思.STM8S单片机主函数地址/复位地址是0x8000-0x8003.地址0x8004-0x8080为其它中断函数地址2.局部的变量,全局的变量,都在主函数运行后被赋初值或运行中改变值,这些变量都存储在RAM中.只有code/const指定了的才会在ROM中.3.可以利用软件复位实现软件间跳转(跳转前修改地址0x8000-0x8003中复位函数的地址); 也可直接利用跳转指令实现跳转.四:操作流程1 :APP软件,在STVD软件中,工程->设置->Linker->Caneral->Input中,设置中断地址0xa300 , Flash地址0xa380 .设置是否完成会在.lkf文件中看到,这是地址分配文件2 :Boot软件,在软件中利用汇编指令跳转到APP代码Flash的开始地址._asm("LDW X, SP ");_asm("LD A, $FF");_asm("LD XL, A ");_asm("LDW SP, X ");_asm("JPF $A380"); //跳转到APP Flash地址0xA380嵌入app.bin的地址为偏移地址,包含中断向量表地址/Flash 地址.Boot代码的地址分配默认.3.利用smart Pro软件将APP.hex文件转化成APP.bin4.利用二进制软件,修剪无用数据5.先在smart pro 2008中导入Boot.hex ,再导入修剪过的app.bin , 最后保存为Down.hex即可. 注意,导入app.bin时,不要清除之前导入的Boot代码.同时注意导入的app.bin 文件的Flash地址,导入到缓冲区的地址(器件地址)要对应跳转地址.五:Smart PRO 2008的应用.1.该软件可作一般二进制处理软件使用.但其特别之处在于,它的显示区/缓冲区/器件存储区都是基于具体真实的芯片存储架构,所以比一般的二进制软件好操作芯片的存储.具体操作在此不说明,可单独联系我.六:声明/其它1:以上内容为个人观点,没有经过严格测试,如有使用,请使用者自行评估风险,出现问题本人一概不负责!2:技术交流:3228504429。
STM8S开发环境搭建IAR For STM8
标签:STM8SSTM8S-Discovery IAR
2013-12-29 15:593139人阅读评论(0) 收藏举报分类:
STM8S单片机(3)
作者同类文章X
版权声明:本文为博主原创文章,未经博主允许不得转载。
/*
********************************************************************************************************************** ************
* Name : STM8S开发环境搭建IAR For STM8
* Author : MingMing
* Release : 2013/12/29
* Update : 2013/12/29
* E-mail : clint.wang@
********************************************************************************************************************** ************
*/
本文采用的是STM8S-Discovery开发板,开发板上半部分为ST Link调试器,芯片采用的是STM32F103C8,下半部分是STM8S105C6的开发板。
对于STM8的开发环境,主要采用两种,一种是IAR For STM8,另一种是官方的ST Toolset。
ST Toolset中包含了两个工具STVD(ST Visual Develop)和STVP(ST Visual Programmer)。
STVD是一款开发工具,它自身并没集成编译器,因此需要安装第三方编译器Cosmic。
STVP 是一款烧录工具,它支持.hex .s19 .sx三种文件的烧录,对IAR编译出的.hex文件的烧录我们就不用太担心了。
下载IAR For STM8 1.3.1(IAR Embedded Workbench for STMicroelectronics STM8 1.31)并安装。
下载ST Toolset 4.3.2并安装(在这里安装它,只为了使用它的STVP烧录工具)。
如果想采用官方的开发环境,可以下载Cosmic并安装。
环境安装完毕后,就可以连接开发板到你的PC机了,如果连接OK的话,那么你的电脑会多出一个盘符,30M左右的大小,里面包含几个网址,想了解更多的同学可以去逛一逛。
打开STVP烧录工具,按照图中的方法来配置。
打开一个.hex文件。
点击Program à Current tab,如果出现下面的状况,那么很不幸,有麻烦出现了。
针对上面的情况可能有两种情况:
1.ST Link的Firmware未被当前版本的STVP支持,在开始 -> 所有程序 -> ST Toolset -> Setup下找到Upgrade ST Link,运行它之后,我们需要将开发板重新连接到PC机,否则将会显示不能进入DFU模式。
在重新连接开发板之后,点击Device Connect。
在这里我们可以找到ST Link现在的固件版本和将要升级的固件版本。
点击Yes升级就自动完成了。
升级完成后,还是出现上面的情况,那么就说明ST Link已经连接成功,下面的STM8S开发板未被识别。
为此我找到了STM8S-Discovery 的用户手册,发现在板子中间有个焊接桥,这两个焊接桥是RESET和SWIN,因为ST Link可以应用到其它系列的开发板上,所以默认是断开的。
那么就连接上吧,如果你不想焊接就用两根杜邦线在排阵之间连接。
再次打开.hex文件,点击Program all tabs。
程序烧录成功。
打开IAR集成开发环境,建立工作空间和工程的过程在这里不加以赘述。
重要的是对IAR的配置完成对开发板的调试。
建立工程后,工作区会有几行代码,我们可以编写一个小程序,控制开发板的LED。
那么开始吧,一显身手的时候到了。
编译通过后,接下来就要开始调试工作了。
可是我们的IAR还没有配置,那么点击Project -> Options出现一个配置对话框,就根据下图进行配置吧。
2.配置完成后,点击Debug按键,如果出现了无法连接到ST Link的情况,可能原因就是当前IAR版本并不支持该ST Link的固件版本。
在下图所示这个几个路径下都有STLinkUSBDriver.dll这个文件,这个文件就是咱们升级ST Link所用到的文件,它在Program
Files\STMicroelectronics\st_toolset\stlink路径下,既然ST Link升级成功了并且STVP烧录工具正常工作,那么就用这个文件替换其他文件夹下的该文件。
OK,让我们再试着Debug一次。
如果未出现上面所说的错误,OK,开始调试吧。
在调试通过后,我们还要注意一点,调试用的是.out文件,烧录到芯片中要用.hex文件,但是编译的代码并没有生成我们期待的.hex 文件出现,点击Project -> Options出现一个配置对话框。
按照下图中的方法配置。
配置完成后再次编译,OK,这回看看是不是有.hex文件格式生成。
需要注意的是,集成开发环境在编译代码时需要区分在Debug模式还是在Release模式。
Debug模式下生成的.hex文件的大小一般大于Release模式下生成的,因为前者的.hex文件中包含了很多调试信息。
根据上面学习到STVP烧录程序的方式,开始你快乐的编程吧。
顶
1
踩。