羞羞小视频在线观看_羞羞视频免费入口网站_羞羞视频下载APP_男女羞羞视频软件

歡迎光臨東莞市飛江電子科技有限公司官網(wǎng)!
全國(guó)咨詢(xún)熱線(xiàn)

13926563901

18925580829

飛江淘寶店鋪

首頁(yè)>技術(shù)資料>ST單片機(jī)

?STM8的C語(yǔ)言編程

發(fā)布時(shí)間:2018-04-07   瀏覽量:

STM8的C語(yǔ)言編程(1)--基本程序與啟動(dòng)代碼分析

 

現(xiàn)在幾乎所有的單片機(jī)都能用C語(yǔ)言編程了,采用C語(yǔ)言編程確實(shí)能帶來(lái)很多好處,至少可讀性比匯編語(yǔ)言強(qiáng)多了。

在STM8的開(kāi)發(fā)環(huán)境中,可以通過(guò)新建一個(gè)工程,自動(dòng)地建立起一個(gè)C語(yǔ)言的框架,生成后開(kāi)發(fā)環(huán)境會(huì)自動(dòng)生成2個(gè)C語(yǔ)言的程序,一個(gè)是main.c,另一個(gè)是stm8_interrupt_vector.c。main.c中就是一個(gè)空的main()函數(shù),如下所示:

 

/* MAIN.C file

 *

 * Copyright (c) 2002-2005 STMicroelectronics

 */

 

 

main()

{

       while (1);

}

 

而在stm8_interrupt_vector.c中,就是聲明了對(duì)應(yīng)該芯片的中斷向量,如下所示:

/*    BASIC INTERRUPT VECTOR TABLE FOR STM8 devices

 *   Copyright (c) 2007 STMicroelectronics

 */

 

typedef void @far (*interrupt_handler_t)(void);

 

struct interrupt_vector {

       unsigned char interrupt_instruction;

       interrupt_handler_t interrupt_handler;

};

 

@far @interrupt void NonHandledInterrupt (void)

{

       /* in order to detect unexpected events during development,

          it is recommended to set a breakpoint on the following instruction

       */

       return;

}

 

extern void _stext();     /* startup routine */

 

struct interrupt_vector const _vectab[] = {

       {0x82, (interrupt_handler_t)_stext}, /* reset */

       {0x82, NonHandledInterrupt}, /* trap  */

       {0x82, NonHandledInterrupt}, /* irq0  */

       {0x82, NonHandledInterrupt}, /* irq1  */

       {0x82, NonHandledInterrupt}, /* irq2  */

       {0x82, NonHandledInterrupt}, /* irq3  */

       {0x82, NonHandledInterrupt}, /* irq4  */

       {0x82, NonHandledInterrupt}, /* irq5  */

       {0x82, NonHandledInterrupt}, /* irq6  */

       {0x82, NonHandledInterrupt}, /* irq7  */

       {0x82, NonHandledInterrupt}, /* irq8  */

       {0x82, NonHandledInterrupt}, /* irq9  */

       {0x82, NonHandledInterrupt}, /* irq10 */

       {0x82, NonHandledInterrupt}, /* irq11 */

       {0x82, NonHandledInterrupt}, /* irq12 */

       {0x82, NonHandledInterrupt}, /* irq13 */

       {0x82, NonHandledInterrupt}, /* irq14 */

       {0x82, NonHandledInterrupt}, /* irq15 */

       {0x82, NonHandledInterrupt}, /* irq16 */

       {0x82, NonHandledInterrupt}, /* irq17 */

       {0x82, NonHandledInterrupt}, /* irq18 */

       {0x82, NonHandledInterrupt}, /* irq19 */

       {0x82, NonHandledInterrupt}, /* irq20 */

       {0x82, NonHandledInterrupt}, /* irq21 */

       {0x82, NonHandledInterrupt}, /* irq22 */

       {0x82, NonHandledInterrupt}, /* irq23 */

       {0x82, NonHandledInterrupt}, /* irq24 */

       {0x82, NonHandledInterrupt}, /* irq25 */

       {0x82, NonHandledInterrupt}, /* irq26 */

       {0x82, NonHandledInterrupt}, /* irq27 */

       {0x82, NonHandledInterrupt}, /* irq28 */

       {0x82, NonHandledInterrupt}, /* irq29 */

};

在stm8_interrupt_vector.c中,除了定義了中斷向量表外,還定義了空的中斷服務(wù)程序,用于那些不用的中斷。當(dāng)然在自動(dòng)建立時(shí),所有的中斷服務(wù)都是空的,因此,除了第1個(gè)復(fù)位的向量外,其它都指向那個(gè)空的中斷服務(wù)函數(shù)。

生成框架后,就可以用Build菜單下的Rebuild All對(duì)項(xiàng)目進(jìn)行編譯和連接,生成所需的目標(biāo)文件,然后就可以加載到STM8的芯片中,這里由于main()函數(shù)是一個(gè)空函數(shù),因此沒(méi)有任何實(shí)際的功能。不過(guò)我們可以把這個(gè)框架對(duì)應(yīng)的匯編代碼反出來(lái),看看C語(yǔ)言生成的代碼,這樣可以更深入地了解C語(yǔ)言編程的特點(diǎn)。

生成的代碼包括4個(gè)部分,如圖1、圖2、圖3、圖4所示。

完整的資料請(qǐng)點(diǎn)擊下載   飛江科技  m.wastewaterengineeringjobs.com