STVD TIM4 8位中斷定時器

2021-06-26 16:13:44 字數 1807 閱讀 4803

中斷定時:

1.在main.c中寫下中斷函式

@far @interrupt void tim4_upd_ovf_irqhandler(void)

新增宣告:void tim4_upd_ovf_irqhandler(void);

出現錯誤「#error cpstm8 main.c:40(48) space attribute conflict「

將「@near

@interrupt void tim4_upd_ovf_irqhandler(void)」改為「@far@interrupt void tim4_upd_ovf_irqhandler(void)」

2.在stm8_interrupt_vector.c檔案中在「extern void _stext();」下面新增宣告:extern void tim4_upd_ovf_irqhandler(void);

更改中斷向量表為: , /* irq23 */

在中斷向量表中若不新增(interrupt_handler_t),將會出現「#error cpstm8 stm8_interrupt_vector.c:48(8+23) invalid pointer initializer」的錯誤

3,中斷函式既可以放在main.c中也可以放在stm8_interrupt_vector.c中。

//中斷方式的8位定時器

//週期是30.63ms

#include "stm8s103f.h"

main()

}stm8_interrupt_vector.c

struct interrupt_vector ;

@far @interrupt void nonhandledinterrupt (void)

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

void tim4_upd_ovf_irqhandler(void);

//函式功能:定時器4的中斷服務程式

//輸入引數:無

//輸出引數:無

//返回值:無

@near @interrupt void tim4_upd_ovf_irqhandler(void)

struct interrupt_vector const _vectab = , /* reset */

, /* trap  */

, /* irq0  */

, /* irq1  */

, /* irq2  */

, /* irq3  */

, /* irq4  */

, /* irq5  */

, /* irq6  */

, /* irq7  */

, /* irq8  */

, /* irq9  */

, /* irq10 */

, /* irq11 */

, /* irq12 */

, /* irq13 */

, /* irq14 */

, /* irq15 */

, /* irq16 */

, /* irq17 */

, /* irq18 */

, /* irq19 */

, /* irq20 */

, /* irq21 */

, /* irq22 */

, /* irq23 */

, /* irq24 */

, /* irq25 */

, /* irq26 */

, /* irq27 */

, /* irq28 */

, /* irq29 */

};

中斷 定時器(二)

上圖即為中斷過程示意圖,產生中斷的請求源被稱為中斷源,中斷源向cpu提出的處理請求被稱為中斷請求或中斷申請。cpu暫時中止當前的事件,轉去處理中斷請求所對應的事件稱為cpu的中斷響應過程,對事件的整個處理過程稱為中斷服務 中斷處理 處理完畢後,返回到原先被中止的地方稱為中斷返回。80c51的終端系統...

中斷定時器與流水燈

此程式為設定led流水燈與數碼管第0一位的0 16數字迴圈亮。不能將數碼管程式放進主函式裡,因為延遲函式delay,可能會在add自加到40時剛好在dalay裡面,這時不會有數碼管的閃爍。include include define uchar unsigned char define uint u...

PWM,外部中斷,定時器中斷的基本總結

本週的學習內容主要是pwm,外部中斷和定時器中斷,了解了pwm的基本功能以及外部中斷,定時器中斷的執行過程.一 pwm 1.pwm一般是指脈衝寬度調製,通過pwm功能就能調節輸出電壓。2.占空比指的是高低電平所佔時間的比值,比值越大,占空比越大。在乙個週期t內,若高電平輸出時間為0.4t,則它的占空...