您好,參考該貼下面回復(fù),注意中斷函數(shù)要加中斷聲明
void TIM3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
原來是這樣,好的謝謝
@TECH62 請問各中斷服務(wù)程序,函數(shù)名要怎么寫? 在哪個(gè)資料里?
您好,可參考啟動(dòng)文件相關(guān)函數(shù)寫法,如下圖
好的,謝謝,中斷服務(wù)程序入口程序已經(jīng)找到了。另外有幾個(gè)問題
中斷服務(wù)程序必須要聲明,是因?yàn)檫@是一個(gè)回調(diào)函數(shù)嗎? STM32的中斷服務(wù)程序也是要這樣聲明的嗎?
__attribute__((interrupt("WCH-Interrupt-fast")))? 的作用是啥? "WCH-Interrupt-fast"這是你們定義的一個(gè)讓編譯器進(jìn)行某種操作的相當(dāng)于命令的意思嗎?如果是的話,具體是什么意思呢?
謝謝!
您好,使用CH32V系列MCU需要加該中斷聲明,其他不需要。關(guān)于中斷聲明的解釋,可以參考一下下帖解釋,如下圖。后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通。
好的,明白了,謝謝
我看了啟動(dòng)文件,中斷服務(wù)程序的所有回調(diào)函數(shù)入口地址都是跳轉(zhuǎn)到1b執(zhí)行( j 1b ), 如果不聲明自己的中斷處理函數(shù),產(chǎn)生的中斷就不會(huì)回調(diào)我們寫的中斷服務(wù)程序,導(dǎo)致程序( j 1b ),從而導(dǎo)致程序跑飛
@TECH62 對了,為什么中斷服務(wù)程序里,還要先檢查是否發(fā)生中斷?難道還能有其它情況進(jìn)入中斷服務(wù)程序(程序跑飛?)?
void TIM3_IRQHandler(void)
{
? ? static u8 i=0;
? ? if (TIM_GetITStatus(TIM3, TIM_IT_Update)!=RESET)? ? //檢查TIM3中斷是否發(fā)生
我去百度了一下,明白了,謝謝