剛剛接觸STM8單片機(jī),之前一直在Linux下開(kāi)發(fā),一時(shí)有點(diǎn)懵逼了,于是把自己的一些學(xué)習(xí)過(guò)程記錄下來(lái),希望對(duì)與像我這樣的門外漢有所幫助。
1、安裝IAR軟件: 百度一下,一大堆的安裝教程, 我安裝了2.0以上的版本,需要license,我用注冊(cè)機(jī)生成的注冊(cè)碼填進(jìn)去,一直提示注冊(cè)碼無(wú)效, 沒(méi)辦法使用,最后只能安裝 1.42版本的IAR,(安裝時(shí)記得安裝ST-LINK驅(qū)動(dòng));
2、在IAR中創(chuàng)新工程:project->create new project 然后選擇模板, 我選擇的是C模板,點(diǎn)擊OK, 就會(huì)生成一個(gè)main.c文件及main函數(shù);
3、把庫(kù)文件拷貝到工程目錄下,(這里我拷貝Libraries 、 Utilities)
4、配置工程信息:
鼠標(biāo)放到工程名上,點(diǎn)擊右鍵彈出如下:
點(diǎn)擊Options...,彈出如下配置界面:
5、以下簡(jiǎn)單的說(shuō)明一下一些配置,具體的配置還是需要根據(jù)自己的實(shí)際情況來(lái)配置:
a、general option 的Library Options 中的printf 和scanf 一定要選擇 small 不然代碼里面使用printf函數(shù)時(shí),編譯會(huì)提示如下錯(cuò)誤,這個(gè)錯(cuò)誤讓我郁悶里很久才找出原因:
b、C/C++ compiler 選項(xiàng),選擇C編譯器,c99標(biāo)準(zhǔn),preprocessor配置說(shuō)明如下:
c、因?yàn)椴捎玫氖荢T-LINK調(diào)試,所以debugger選項(xiàng)的配置如下:
其他的選項(xiàng)可以根據(jù)自己的需求配置,因?yàn)槲业捻?xiàng)目比價(jià)簡(jiǎn)單所以就沒(méi)有配置其他選項(xiàng)。
程序實(shí)現(xiàn)串口打?。?p>#include "stm8l15x.h"
#include "stdio.h"
#include "stm8_eval.h"
#include "stm8l15x_beep.h"
#include "delay.h"
#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_ */
/************************************************************************************
* @brief Retargets the C library printf function to the USART.
* @param[in] c Character to send
* @retval char Character sent
* @par Required preconditions:
* - None
************************************************************************************/
PUTCHAR_PROTOTYPE
{
/* Write a character to the USART */
USART_SendData8(EVAL_COM1, c);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET);
return (c);
}
/************************************************************************************
* @brief Retargets the C library scanf function to the USART.
* @param[in] None
* @retval char Character to Read
* @par Required preconditions:
* - None
************************************************************************************/
GETCHAR_PROTOTYPE
{
int c = 0;
/* Loop until the Read data register flag is SET */
while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET);
c = USART_ReceiveData8(EVAL_COM1);
return (c);
}
/**************************************************************************
* name: systemClockInit
* param:
* int: NULL
* out: NULL
* return: NULL
* function: config systrm clock frequency
***************************************************************************/
void SystemClockInit(void)
{
CLK_SYSCLKSourceSwitchCmd(ENABLE);// Select HSE as system clock source
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_4); // system clock prescaler: 4
while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
{
}
}
/**************************************************************************
* name: UsartInit
* param:
* int: NULL
* out: NULL
* return: NULL
* function: config and init uart
***************************************************************************/
void UsartInit(void)
{
SYSCFG_REMAPDeInit();
SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortC, ENABLE);
STM_EVAL_COMInit(COM1, (uint32_t)115200, USART_WordLength_8b, USART_StopBits_1,
USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));
enableInterrupts();
}
/**************************************************************************
* name: mian
* param:
* int: NULL
* out: NULL
* return: 0
* function: program entry
***************************************************************************/
int main( void )
{
SystemClockInit();
UsartInit();
while(1)
{
printf("hello world n");
delay_ms(500);
}
}
實(shí)用ST-LINK連接板和PC機(jī), 然后連接好串口;
到這里,一個(gè)簡(jiǎn)單的STM8單片機(jī)程序就搞定了
上一篇:IAR for STM8 學(xué)習(xí)筆記(1)--數(shù)據(jù)類型
下一篇:IAR - IAR FOR STM8安裝
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- stm32與Arduino的比較
- STM32H503開(kāi)發(fā)(2)----STM32CubeProgrammer燒錄
- STM32簡(jiǎn)介 STM32和ARM7的關(guān)系
- stm32屬于arm嗎_arm和stm32的區(qū)別
- STM32調(diào)試神器STM32CubeMonitor介紹
- 基于通過(guò)寄存器和調(diào)用庫(kù)函數(shù)的方式,對(duì)比測(cè)試STM32讀寫IO時(shí)間
- 基于STM32單片機(jī)通過(guò)使用宏assert_param來(lái)實(shí)現(xiàn)運(yùn)行時(shí)間檢測(cè)
- 基于stm32單片機(jī)利用通用定時(shí)器輸出PWM
- 工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲(chóng)燈
- 激光雷達(dá)最重要的參數(shù):信噪比
- 十字路口的“金屬休克”:盤點(diǎn)那些智駕系統(tǒng)很難替代人類駕駛員的場(chǎng)景
- IP智能家居控制系統(tǒng)
- 鋰離子電池充電電路設(shè)計(jì)
- 手機(jī)中音頻系統(tǒng)抗ESD和EMI干擾設(shè)計(jì)
- 北航吳江浩教授團(tuán)隊(duì)研發(fā)的首個(gè)具備自主懸停能力的仿蜂鳥(niǎo)微型飛行器
- 基于VMR6512的無(wú)線音頻轉(zhuǎn)發(fā)器設(shè)計(jì)
- CS7123在電視盒中的應(yīng)用
- AiMOGA墨甲機(jī)器人驚艷亮相印尼車展,加速東南亞智能銷售布局
- LED閃光燈驅(qū)動(dòng)芯片在照相手機(jī)中的應(yīng)用
- “感謝有你,感恩有禮”——感恩節(jié)搶樓&送謝禮活動(dòng)
- “TI 中國(guó)大學(xué)計(jì)劃” 知多少——答題贏好禮!
- Vicor 白皮書(shū)下載有禮 | 在48V架構(gòu)中使用高密度功率轉(zhuǎn)換器構(gòu)建更好的機(jī)器人
- 有獎(jiǎng)直播|英飛凌OBC解決方案深度詳解 報(bào)名中!
- 共抗疫情,少出門多學(xué)習(xí)。領(lǐng)取下載積分,讓學(xué)習(xí)資料到你碗里!
- ADI有獎(jiǎng)下載活動(dòng)之22:針對(duì)電子測(cè)試和測(cè)量的RF和微波解決方案
- 直播已結(jié)束【使用 TI 低成本 MSPM0 MCU 快速開(kāi)發(fā) – 生態(tài)詳解系列之二】(9:45開(kāi)始入場(chǎng))
- 駿龍科技&ADI有獎(jiǎng)直播:適用于視頻、轉(zhuǎn)換器、通信的千兆數(shù)字隔離器
- 8051單片機(jī)串行通信參數(shù)設(shè)置(8位UART+timer1 8位自動(dòng)重裝)
- 8051單片機(jī)(STC89C52)以輪詢方式實(shí)現(xiàn)串行通信
- 華數(shù)機(jī)器人楊海濱:從自動(dòng)化到智能化車間的新需求和新機(jī)會(huì)
- 8051單片機(jī)(STC89C52)以定時(shí)器中斷模式實(shí)現(xiàn)倒計(jì)時(shí)器
- 不得使用梯次利用電池!山西啟動(dòng)“新能源+儲(chǔ)能”示范項(xiàng)目申報(bào)
- PIC單片機(jī)與AM2302溫濕度傳感器通信優(yōu)化
- 使用PIC單片機(jī)連接旋轉(zhuǎn)編碼器的方法
- 【PIC單片機(jī)的學(xué)習(xí)】在MAPLAB X IDE中加入printf函數(shù)
- 關(guān)于PIC單片機(jī)的定時(shí)器精準(zhǔn)計(jì)時(shí)的計(jì)算
- pic單片機(jī)使用printf函數(shù)