iarstm8s编译器设置
A. 我在IAR中建立stm8S的工程,头文件路径都已经设置进去了为什么还是报错找不到头文件
你把你stm8_st.._driver文件夹放到与你工程文件的文件夹的的同级的文件夹里就好了。
\..\表示工程文件的上层级文件夹
B. stm8s iar怎么设置选项字节
stm8 flash操作很简单。想寄存器输入解锁码。之后就可以直接对flash读写。当然ubc区域不可以访问
C. iar for stm8怎么建立工程
按照实验室老大的要求,入手STM8。对于我这样一个就用过51做点东西的人来说,STM8还是一款相当高级的8位机。个人感觉和AVR差不多吧。还是先看看它的特点吧!
STM8是ST意法半导体针对工业应用和消费电子开发而推出的8位单片机。
每种MCU都有自身的优点与缺点,与其它8-bit MCU相比,STM8 8-bit MCU最大的特点是:
· 内核:
o 最高fcpu频率,可达24MHz,当fcpu≤16MHz时0等待的存储器访问
o 高级STM8内核,基于哈佛结构并带有3级流水线
o 扩展指令集
o 最高20 MIPS @ 24 MHz
· 时钟、复位和电源管理:
o 2.95V到5.5V工作电压
o 灵活的时钟控制,4个主时钟源
o 带有时钟监控的时钟安全保障系统
· 电源管理:
o 低功耗模式(等待、活跃停机、停机)
o 外设的时钟可单独关闭
o 永远打开的低功耗上电和掉电复位
· 通信接口:
o 高速1Mbit/s CAN 2.0B接口
o 带有同步时钟输出的UART — LIN主模式
o UART兼容LIN2.1协议,主/从模式和自动重新同步
o SPI接口最高到10Mbit/s
o I2C接口最高到400Kbit/s
· I/O端口:
o 带有高吸收电流输出的GPIO脚
o 非常强健的GPIO设计,对倒灌电流有非常强的承受能力
· 开发支持:
o 单线接口模块(SWIM)和调试模块(DM),可以方便地进行在线编程和非侵入式调试
· 性价比:
o 相对于现在众多的8位单片机,STM8的价格与性能比例是比较高。
这么多优点,虽然好多都不懂还是慢慢学吧。。首先建立开发平台:
用的是IAR FOR STM8,感觉还不错吧,编译器的效率很高。
IAR下载也很简单,直接上官网上有完全版和代码限制版的。。
从建立一个新的工程开始:
1.先创建一个workplace.选择File>New>Workplace
2.(创建一个新的工程,选择Project>Creat New Project,如果用的是IAR FOR STM8 就默认无需更改。保存并输入Project名字,在workplace窗口中显示如下
默认配置是Debug
3.在添加文件到工程之前,先保存Workplace。并输入保存的名字
Workplace的扩展名是eww。
4.添加文件到工程,先File>New>File,也可以直接使用快捷键新建一个文件。之后保存。
保存的时候可以新建一个C文件夹,以便区分工程中的其他文件,方便查找和再调用。
再将文件添加到工程中就可以开始了。
右击工程名>ADD>ADD FILES, 就可以添加文件。
首先添加头文件,配置寄存器方便写程序的时候调用。
注意:记得设置路径,这样IAR才能找到你的头文件。
打开工程Option设置,在C/++compiler ――――PreProcessor中加入你自己的路径
如
$PROJ_DIR$\H // 加入工程文件所在目录下的\H子目录
测试程序:
#include <iostm8s207sb.h>
void main()
{
while(1);
}
编译连接下:
用的是ST-LINK,下载前先设置下
没有错误,可以开始了
D. 为什么IAR环境给stm8s103编写程序,不能使用bit型变量吗
不的编译器里面的保留字名称不同,你可以查他的帮助文档的保留字,你可以试试:bool i声明看看。
E. IAR for STM8 的 编译器 对Printf 的格式输出不支持吗
1: 一定一定要在主程序中加入 STDIO.H
2:putchar()要重新定义
3:串口波特率 115200 8 NO 1形式
4: 编译器library 选型中 选择FULL
5:如果实验以上还是不行,还有一个方法就是自己来写printf函数!
以下是网上摘抄的的printf函数,经过测试,完全可以用!
#include "stm8s.h"
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>//itoa()......库中没有
#include <string.h> //memset()
#include <math.h>
#include <ctype.h>
#define TRUE 1
#define FALSE 0
//#include <memory.h>
#define MAXBUF 15
#define DEFAULT_PRECI 3 //符点型默认精度
/*
由于不同的编译器 putcha 和 getchar 形参和返回值略有不同。
因此此处采用宏定义的方式区别。
_RAISONANCE_ 和 _COSMIC_ 这2个宏是由编译器自动添加的预编译宏
*/
#ifdef _RAISONANCE_
#define PUTCHAR_PROTOTYPE int putchar (char c)
#define GETCHAR_PROTOTYPE int getchar (void)
#elif defined (_COSMIC_)
#define PUTCHAR_PROTOTYPE char putchar (char c)
#define GETCHAR_PROTOTYPE char getchar (void)
#else /* _IAR_ */
#define PUTCHAR_PROTOTYPE int putchar (int c)
#define GETCHAR_PROTOTYPE int getchar (void)
#endif /* _RAISONANCE_ */
/*
*********************************************************************************************************
* 函 数 名: putchar
* 功能说明: 重定义 putchar 函数, 这样可以使用printf函数从串口1打印输出
* 形 参: 等待发送的字符
* 返 回 值: 返回已发送的字符
*********************************************************************************************************
*/
PUTCHAR_PROTOTYPE
{
/* 发送一个字符 c 到UART1 */
UART2_SendData8(c);
/* 等待发送完毕 */
while (UART2_GetFlagStatus(UART2_FLAG_TXE) == RESET);
//while (UART2_GetFlagStatus(UART2_FLAG_TC) == RESET);
return (c);
}
/*
*********************************************************************************************************
* 函 数 名: getchar
* 功能说明: 重定义C库中的 getchar 函数,这样可以使用scanff函数从串口1输入数据
* 形 参: 无
* 返 回 值: 返回已读到的字符
*********************************************************************************************************
*/
GETCHAR_PROTOTYPE
{
#ifdef _COSMIC_
char c = 0;
#else
int c = 0;
#endif
/* 等待新数据到达 */
while (UART2_GetFlagStatus(UART2_FLAG_RXNE) == RESET);
/* 读取数据寄存器 */
c = UART2_ReceiveData8();
return (c);
}
F. 在stm8,编译器为IAR的环境下,IAP升级程序的指针定义问题。
DataAddress被定义成近指针,寻指范围不超过64KB,
(u8 NEAR**)表示强制转换成二维指针,即指向指针的指针;
(&DataBuffer[N_ADDR_3])表示取数组DataBuffer的第N_ADDR_3元素的地址;
DataAddress赋值号右边第一个*号,是解指针,对于一个二维指针的解指针,得到的结果仍是指针,是一维指针,赋值给一维指针DataAddress符合类型;
综合起来可以得出,数组DataBuffer的元素存的也是指针,指向最终数据的地址,类型是unsigned char型,对DataAddress解指针,即:
u8 dataValue = 0x00;
dataValue = *DataAddress;
解指针后即可得到数组DataBuffer[N_ADDR_3]中所存地址中的数据;
讲明白 了吧。全手敲啊,累死我了。
G. 如何使用iar开发stm8s
注意:以下修改在iar
for
stm8
1.10
sp3下验证,库文件为iar自带的1.1.11、选择cpu类型(支持stm8s系列设备)stm8s.h.../*
uncomment
the
line
below
according
to
the
target
stm8s
device
used
in
yourapplication.
tip:
to
avoid
modifying
this
file
each
time
you
need
to
switch
between
thesedevices,
you
can
define
the
device
in
your
toolchain
compiler
preprocessor.
*/#if
!defined
(stm8s208)
&&
!defined
(stm8s207)
&&
!defined
(stm8s105)
&&
!defined
(stm8s103)
&&
!defined
(stm8s903)#define
stm8s208/*
#define
stm8s207
*//*
#define
stm8s105
*/
/*
#define
stm8s103
*//*
#define
stm8s903
*/#endif根据你的cpu类型选择宏定义,比如我这里用的是105系列,则修改为:/*
#define
stm8s208
*//*
#define
stm8s207
*/
#define
stm8s105
/*
#define
stm8s103
*//*
#define
stm8s903
*/选择好cpu类型后,还需查看选择的类型中哪些外设是包含的哪些外设没有包含,将没有包含的外设驱动c文件在工程中去掉如105系列没有adc2、can、uart1、uart32、修改stm8s_conf.h文件选择好cpu类型后,接下来就是选择要使用的外设了,stm8s_conf.h就是外设驱动选择开关,在用户函数中,只需包含此头文件即可。
H. 如何使用iar编写stm8程序
IAR是一款比较成熟的嵌入式软件开发环境,用IAR编写STM8程序,首先要对所编写程序的功能IO口有比较熟悉的了解,同时要学会查STM8参考手册和数据手册,在IAR环境中添加头文件和库文件,建立工程就可以自己编写应用程序了。
I. STM8S使用IAR编译时出现SWIM PROG error [4]: Memory write error,自己做的最小系统板子,跪求解答!!
Failed to set configuration with MCU name STM8L151G6: SWIM PROG error [4]: Memory write error
STM8芯片写保护了,需要解除一下写保护,使用STVP这个软件,打开之后选择OPTION BYTE 烧写一下就好
J. STM8S 应该使用什么编译器软件
stvd 和 iar for stm8
