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
