娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月01日(星期日)

2018年06月01日 | STM8中斷的設置(ST Visual Develop和IAR環境下)

發布者:心愿實現 來源: eefocus關鍵字:STM8  中斷  設置 手機看文章 掃描二維碼
隨時隨地手機看文章

以下以stm8s103為例介紹在ST Visual Develop和IAR環境下的中斷設置;這兩種只是環境不同其實中斷向量是不會變的,先看一下數據手冊,


再結合芯片手冊中中斷向量映像表,如下圖所示


結合起來的話我們就能夠理解的。

在用ST Visual Develop環境時新建一個新的Stm8工程它會自動生成一個main.c和一個stm8_interrupt_vector.c文件。

空白的main.c文件時如下所示的:

[cpp] view plaincopy

/* MAIN.C file 

 *  

 * Copyright (c) 2002-2005 STMicroelectronics 

 */  

  

  

main()  

{  

    while (1);  

}  

 

新的空白的stm8_interrupt_vector.c是如下面所示的:

 

[cpp] view plaincopy

/*  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是不需要改的,但是如果用到中斷必須在相應的位置做改動,比如如果我們用到TIM4定時器中斷,我們對照中斷向量表TIM4的序列是23,那么在stm8_interrupt_vector.c的struct interrupt_vector const _vectab[]中對應的/*ireq23*/的NonHandledInterrupt做修改(命名隨意),如下所示:

stm8_interrupt_vector.c:

 #include "STM8S103F.h"

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

struct interrupt_vector {

unsigned char interrupt_instruction;

interrupt_handler_t interrupt_handler;

};

 

@far @interrupt void TIM4IRQ (void)

{

TIM4_SR=0x00;

    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxx(自己根據需要寫入內容)

}

 

 

 

 

}

@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, TIM4IRQ}, /* irq23 */

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

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

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

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

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

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

};

 

下面說一下在IAR下,在IAR下必須要添加iostm8s103k3.h文件,在文件的最后有如下內容:

/*-------------------------------------------------------------------------

 *      Interrupt vector numbers

 *-----------------------------------------------------------------------*/

#define AWU_vector                           0x03

#define SPI_TXE_vector                       0x0C

#define SPI_RXNE_vector                      0x0C

#define SPI_WKUP_vector                      0x0C

#define SPI_CRCERR_vector                    0x0C

#define SPI_OVR_vector                       0x0C

#define SPI_MODF_vector                      0x0C

#define TIM1_OVR_UIF_vector                  0x0D

#define TIM1_CAPCOM_BIF_vector               0x0D

#define TIM1_CAPCOM_TIF_vector               0x0D

#define TIM1_CAPCOM_CC1IF_vector             0x0E

#define TIM1_CAPCOM_CC2IF_vector             0x0E

#define TIM1_CAPCOM_CC3IF_vector             0x0E

#define TIM1_CAPCOM_CC4IF_vector             0x0E

#define TIM1_CAPCOM_COMIF_vector             0x0E

#define TIM2_OVR_UIF_vector                  0x0F

#define TIM2_CAPCOM_CC1IF_vector             0x10

#define TIM2_CAPCOM_TIF_vector               0x10

#define TIM2_CAPCOM_CC2IF_vector             0x10

#define TIM2_CAPCOM_CC3IF_vector             0x10

#define UART1_T_TXE_vector                   0x13

#define UART1_T_TC_vector                    0x13

#define UART1_R_OR_vector                    0x14

#define UART1_R_RXNE_vector                  0x14

#define UART1_R_IDLE_vector                  0x14

#define UART1_R_PE_vector                    0x14

#define UART1_R_LBDF_vector                  0x14

#define I2C_ADD10_vector                     0x15

#define I2C_ADDR_vector                      0x15

#define I2C_OVR_vector                       0x15

#define I2C_STOPF_vector                     0x15

#define I2C_BTF_vector                       0x15

#define I2C_WUFH_vector                      0x15

#define I2C_RXNE_vector                      0x15

#define I2C_TXE_vector                       0x15

#define I2C_BERR_vector                      0x15

#define I2C_ARLO_vector                      0x15

#define I2C_AF_vector                        0x15

#define I2C_SB_vector                        0x15

#define ADC1_AWS0_vector                     0x18

#define ADC1_AWS1_vector                     0x18

#define ADC1_AWS2_vector                     0x18

#define ADC1_AWS3_vector                     0x18

#define ADC1_AWS4_vector                     0x18

#define ADC1_AWS5_vector                     0x18

#define ADC1_AWS6_vector                     0x18

#define ADC1_EOC_vector                      0x18

#define ADC1_AWS8_vector                     0x18

#define ADC1_AWS9_vector                     0x18

#define ADC1_AWDG_vector                     0x18

#define ADC1_AWS7_vector                     0x18

#define TIM4_OVR_UIF_vector                  0x19

#define FLASH_EOP_vector                     0x1A

#define FLASH_WR_PG_DIS_vector               0x1A

其實這是一樣的,也是對照中斷向量表,如果用到中斷,必須自己寫中斷,比如還是TIM4定時器中斷,

#pragma vector=TIM4_OVR_UIF_vector 

__interrupt void TIM4_UPD_OVF_IRQHandler (void)

{

   TIM4_SR = 0X00;

 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxx(自己根據需要寫)

  }


關鍵字:STM8  中斷  設置 引用地址:STM8中斷的設置(ST Visual Develop和IAR環境下)

上一篇:STM8 STM32 數據類型
下一篇:stm8 uart2 串口接收中斷協議解碼+定時器中斷

推薦閱讀

?在2018年全球智慧物流峰會上,馬云宣布,菜鳥將建設國家智能物流骨干網。他表示,五年前有個愿望是希望建立全國智能物流骨干網,實現全國任何地方24小時達到,全世界72小時全世界必達。 “中國物流業也幸運也很不幸,不幸的是很快會面臨每天10億個包裹。”馬云預言,今年雙11包裹將成為十年后每天的平均量。 對此,馬云在現場表示,阿里巴巴將投入千億...
據外媒報道,Facebook申請了一項特殊的無人機專利,這款無人機將能夠利用風在空中飛行。這款“雙風箏飛行器”是由兩只風箏組成,它們能在不同的高度漂浮。 每一只風箏都能夠獨立導航,并且無人機可以生成自己的能源來延長飛行時間。跟所有專利一樣,我們不知道Facebook是否正在構建這個系統。但這表明,即便Facebook縮減了此前廣為人知的Aquila項目,這家...
據外媒報道,今年2月下旬,美國能源部橡樹嶺國家實驗室(ORNL)的研究人員展示了一款20KW的雙向無線充電系統,并將系統安裝在一輛中型、插電式混合動力運輸UPS車上。該項目是同類項目中首個相隔11英寸氣隙實現功率傳輸的項目,將該技術改進應用于具有更高地面凈空高度的新型大型車輛上。(圖片來源:橡樹嶺國家實驗室)在演示中,ORNL的無線充電技術采用兩...
電流表用于測量電流,電流測量需要串聯電流表顧名思義用于測量電流。因為串聯在電路中的所有元件通過的電流都是相等的,所以我們可以用串聯法測量電路中的電流。電流表測量電流原理根據串聯在電路中的所有元件所通過的電流相等的原則,把電流表串聯到電路中去就可以測出電路的電流了。串聯會增加電路的內阻,如果內阻變大了,整個電路中的電流就發生變化了...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 四会市| 浏阳市| 左云县| 西丰县| 营山县| 台前县| 新田县| 石楼县| 安泽县| 凤台县| 洞头县| 滁州市| 丽水市| 汤原县| 大庆市| 西青区| 嘉峪关市| 汽车| 康马县| 临泉县| 元江| 米易县| 晴隆县| 莱西市| 建湖县| 白水县| 当阳市| 太谷县| 天全县| 海伦市| 县级市| 当涂县| 青神县| 马公市| 夏津县| 贡觉县| 准格尔旗| 西充县| 木里| 高密市| 加查县|