IAR for stm8使用标准固件库的方法以及注意事项

发布者:温暖拥抱最新更新时间:2018-06-01 来源: eefocus关键字:IAR  stm8  标准固件库 手机看文章 扫描二维码
随时随地手机看文章

标准库其实挺方便的。有了一个模板之后,如果改参数,根本就不需要再去查手册,重新定义寄存器值了。


第一部分,stm8标准库介绍。

stm8的标准库名称代码是stsw-stm8069,根据这个代码就可以到st的官网上下载到最新的固件库。

解压固件库后,有几个文件夹,我这里只是简单的说明各文件夹和文件的作用,具体的说明参考文件包中的chm帮助文档。

Libraries是驱动文件夹,里面的inc文件夹是h文件,src文件夹是c文件,这是最关键的东西。

Utilities是stm自己提供的EVAL开发板程序,如果没用这个EVAL开发板可以无视,有也可以无视,反正就很简单的一个led程序

Project文件夹是工程模板文件,里面有两个重要的文件夹。

一个是Example结尾的,这个是st官方提供的示例程序,我们写程序的时候可以直接从这里面复制粘贴稍微修改一下就能用的,而且若不知道怎么写,这里面也有很多例子可以看。

另一个是Template结尾的,顾名思义就是模板的意思,里面有三种编译器的模板。直接就可以用。此外,这里面还有几个重要的文件。

stm8s_conf.h是配置文件,官方文档说法是可以通过注释与否开关一些外设。我使用这个文件只是在后面加上我自己的h文件,仅此而已。

stm8s_it.c是中断处理文件,所有的中断处理程序都写在这里,模板已经写好,直接填程序就可以了。同名的h文件基本可以无视。

关于,IAR可以选择EWSTM8文件夹下的文件直接使用。如果你没有我这种轻微的程序结构强迫症的话,后面可以不用看了。


第二部分,IAR设置。

st官方是有IAR模板的,如果不删除任何文件,对官方的文件组织结构无视的话,可以直接用。完全不需要其他设置。

下面的内容是去除了自己程序用不到的文件和文件夹后,根据官方的模板重新设置的。

我们自己的程序用到的库文件只有inc,src两个文件夹和Template下的main.c,stm8s_conf.h,stm8s_it.c,stm8s_it.h文件。

新建IAR工程之类的不说了。

新建好了之后,右击左边工程名字---选择option---在general option中----Target----Device选择具体的芯片型号。我经过测试,在新建IAR工程时候选择的芯片型号是无效的,如果这里不进行更改,编译出来的程序可能无效。


然后在C/C++ Compier---Proprecessor添加额外的头文件目录和设备型号,同样的,如果不用标准库,这里可以不用写任何东西。否则必须写,会报错。型号的名字如图所示,相比上面型号后面的C6省略了,具体根据固件库的源码来。$PROJ_DIR$表示当前工作目录。


设置输出hex文件,在Output Conveter中---Output---打勾,选择intel extended格式输出就行了。


添加固件库C文件,h文件不用添加。C文件的添加注意,如果该C文件对应的功能芯片没有,要么不要添加进工程,要么添加进工程后,在左边边栏右击c文件选择-option--对extend from build打勾屏蔽他。


关键字:IAR  stm8  标准固件库 引用地址:IAR for stm8使用标准固件库的方法以及注意事项

上一篇:IAR_FOR_STM8开发之DEMO的建立
下一篇:STM8 寄存器与官方库的组合使用

推荐阅读最新更新时间:2024-03-16 16:04

IAR For AVR 串口中断接收
应用芯片: AT Mega16 晶振: 7.3728MHz 代码文件: uart_int.c |_________DELAY.H ############################################## DELAY.H : #ifndef __IAR_DELAY_H #define __IAR_DELAY_H #include intrinsics.h #define XTAL 7.3728 //可定义为你所用的晶振频率(单位Mhz) #define delay_us(x) __delay_cycles ( (unsigned long
[单片机]
基于STM8的车载抬头显示器设计
随着电子技术与计算机技术在汽车电子中的应用越来越多,传统的机械式仪表已经逐步被电子仪表所代替。电子仪表有体积小、重量轻等优点,可以有效地节约车内有限的空间。其以数字、文字或图形方式显示汽车信息时,显示直观、信息量大,可以根据不同需要修改不同的显示内容。 抬头显示器 HUD是英文Head Up Display的缩写,意为“抬头显示”或“平视显示器”。最初的应用就是在战斗机上,是由电子组件、显示组件、控制器以及高压电源等组成的综合电子显示设备,能将飞行参数、瞄准攻击、自检测等信息,以图像、字符的形式,通过光学部件投射到座舱正前方组合玻璃上的显示装置。由于使司机不必低头察看仪表盘,HUD可以大大缩短司机的读表时间。与传统的仪表板相比
[嵌入式]
ST 3合一开发板stm8学习之 led
ST 3合一开发板stm8学习之 led 这个例程使用了adc tim 和 gpio三种外设,程序功能是 根据adc输入的模拟量改变led 灯闪烁的频率和灯的亮度。 配置过程: Adc相关程序: void ADC_Init(void) { ADC_CR2 = 0x00; 配置寄存器2 配置外部触发是否使能 选择外部触发方式 数据对齐位 扫描模式是否使能位 这里配置为禁止外部触发 转换数据左对齐 禁止扫描模式? ADC_CR1 = 0x00; 配置寄存器1 配置预分频位 转换模式是单词还是连续 ad转换开关。这里配置为fadc=fmaster/2,单次转换,禁止adc ADC_CSR = 0x03; 控制状态寄存
[单片机]
STM8低功耗问题
在使用STM8S003时碰到一个问题:为了降低MCU功耗,在初始化时候禁止了施密特触发器,发现IO- PD3作为输入寄存器IDR一直为0。于是查找资料发现IO口作为输入时候必须开启施密特触发。 另外当IO口复用ADC功能时候也需要注意此寄存器设置,网上搜索问题原因的时候看到因ADC和UART复用时候关掉了触发器产生的问题,帖子如下: http://www.eepw.com.cn/article/201609/310076.htm
[单片机]
<font color='red'>STM8</font>低功耗问题
stm8 停机模式与外部中断唤醒中一个小问题
做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗。而对外接口只有4个按键,也就是唤醒必须要通过这四个按键。 系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码。 使用芯片为stm8s103 1 /***************************************************************** 2 //进入到停机模式 3 *****************************************************************/ 4 void EnterHalt() 5 { 6 int j=255; 7 8 /*
[单片机]
基于LPC2131的IAR ARM的第一个实例:LED闪烁
IAR ARM的资料看了两天,一直没有动手去实践写程序下载到开发板上。 先说一下我的开发环境: IAR ARM :v530 开发板用的是ZLG的LPC2131开发板 下载器用的J-LINK V8 这个是我的第一个程序,都不是自己写的,东一块,西一块的在其他人写的程序里面挖过来的。 首先我们在桌面上建立一个文件夹:1_LED。 这里就是我们程序存放的地方。 IAR ARM 做的确实很好,差不多对于没有IC都有对应的例程。 我们在IAR ARM安装目录下 IAR SystemsEmbedded Workbench 5.4 EvaluationarmexamplesNXPLPC213x 里面能找到一个实例。我们
[单片机]
IAR错误之Error[Li005] no definition for "__program_start"
Error : no definition for __program_start Error while running Linker 出现上面错误的原因是因为之前的工程是在较低版本下进行编译的,在高版本编译的时候,需要做一些修改, 解决办法:打开stm32f10x_vector.c 注意下划线长度的区别 void __program_start( void );改为void __iar_program_start(void); __program_start, 改为__iar_program_start,
[单片机]
<font color='red'>IAR</font>错误之Error[Li005] no definition for
STM8 固件库编写 使用外部晶振串口通信时,发送是乱码
因为我需要做9600波特率的串口通信,所以外部接的是11.0592MHz的晶振。时钟初始化程序如下: void Clock_init() { CLK_DeInit(); CLK_HSECmd(ENABLE); //启用外部时钟 while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY)); //等待外部时钟启动 CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //1分频 CLK_ClockSwitchCmd(ENABLE); CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved