找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 4109|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)一進(jìn)外部中斷就卡死,大佬幫我看下什么原因

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 2 黑幣 回復(fù)本帖可獲得 2 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:936528 發(fā)表于 2021-10-25 10:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
主程序 time,time2,time3由TIM1定時(shí)器提供時(shí)鐘,Sys提供延時(shí)函數(shù),TIM3提供PWM(兩路)



void EXTI4_IRQHandler(void)
{   
    if(EXTI_GetITStatus(EXTI_Line4)!=RESET)//不等于低電平就是1,按下的時(shí)候就不為1了
        {
            Delay_ms(10);
            if(Menu==1)
            {
                Menu=2;
            }else if(Menu==2)
            {
                Menu=1;
            }
            EXTI_ClearITPendingBit(EXTI_Line4);  //清理標(biāo)志位
        }
}

void EXTI9_5_IRQHandler(void)
{
    char keytemp=0x55;
    /*keytemp&0X0F 表示只取末尾四位為有效值*/
    /*0x0F 表示采樣四次IO為高電平  表示IO狀態(tài)穩(wěn)定在高電平*/
    /*0x00 表示采樣四次IO為低電平  表示IO狀態(tài)穩(wěn)定在低電平*/
    while(((keytemp&0X0F)!=0x0F)&&((keytemp&0X0F)!=0x00))
    {
        /*間隔1us后采集*/
         Delay_us(1);
        /*按鍵緩存器左移一位*/
        keytemp<<=1;
        /*當(dāng)脈沖腳為高時(shí) 或稱(chēng)為A相*/
        if(knob1_clk== 1)
        {
            /*按鍵緩存器末尾補(bǔ)1*/
            keytemp |= 0x01;
        }
    }
        if(Menu==2)
    {
    if(knob1_clk==1)
    {
        if(knob1_dt==1)
        {
            Mode_Sv=Mode_Sv+5;    /*A上升沿時(shí) B為高 順時(shí)針*/
        }
        else
        {
            Mode_Sv=Mode_Sv-5;    /*A上升沿時(shí) B為低 逆時(shí)針*/
        }
    }else{
        if(knob1_dt==0)
        {
            Mode_Sv=Mode_Sv+5;    /*A下降沿時(shí) B為低 順時(shí)針*/
        }
        else
        {
            Mode_Sv=Mode_Sv-5;    /*A下降沿時(shí) B為高 逆時(shí)針*/
        }        
    }
    }   
    EXTI_ClearITPendingBit(EXTI_Line6);  //清除LINE6上的中斷標(biāo)志位
}






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:936528 發(fā)表于 2021-10-25 10:01 | 只看該作者
下面是主程序
        while(1)       
        {               
                if ( time >= 300 ) /* 10 * 1 ms = 10ms ʱ¼äµ½ */
                {
                        d=Get_Max31855();
                        TM1=d;
                        if(TM1>=92.5)
                        {
                                TM2=TM1+(TM1-92.3)*0.026;//²ÉÑù¾«¶È²¹³¥       
                        }else
                        {
                        TM2=TM1;
                        }
                        time = 0;
                }
                if ( time2 >= 1000 ) /* 1000 * 1 ms = 1s ʱ¼äµ½ */
                {
                       
                        pid.Pv=TM2;//µ±Ç°Î¶Ƞ      
                        PID_Calc(); //pid¼ÆËã       
                        Mode();//ʱ¿Ì²ì¾õÉèÖÃζȵı仯
                        time2 = 0;
                }
                if ( time3 >= 200 ) /* 10 * 1 ms = 10ms ʱ¼äµ½ */
                {
                        time3 = 0;  
                        OLED_Temp();
                }
        }         
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2021-10-25 13:40 | 只看該作者
EXTI4_IRQHandler里面Delay_ms(10)是用systick中斷實(shí)現(xiàn)的吧???systick中斷優(yōu)先級(jí)低于exti4,所以執(zhí)行到這一句永遠(yuǎn)無(wú)法進(jìn)一步執(zhí)行下去了。

千萬(wàn)不要在中斷處理函數(shù)里面用delay,這是個(gè)基本原則問(wèn)題。
回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2021-10-25 16:10 | 只看該作者
如果你說(shuō)的是真實(shí)的,則外中斷后,跳入中斷服務(wù)程序執(zhí)行,外中斷服務(wù)程序在下列情況下會(huì)死機(jī):
1、沒(méi)有寫(xiě)外中斷服務(wù)程序,即中斷后,程序就【飛】了。
2、有死等的條件語(yǔ)句,因條件不成立,死等出不來(lái)。
3、修改的主程序的重要參數(shù),造成主程序發(fā)生未預(yù)期的結(jié)果。例如,主程序在等某一事件的結(jié)果,突然被外中斷打斷,中斷服務(wù)程序又將這個(gè)事件清除了,造成中斷返回后,主程序等不到事件的結(jié)果。
回復(fù)

使用道具 舉報(bào)

5#
ID:592807 發(fā)表于 2021-10-26 08:46 | 只看該作者
在中斷處理函數(shù)里面放while(),你不死機(jī)天理難容啊。人家中斷處理函數(shù)要么打個(gè)標(biāo)記,要么幾十微秒內(nèi)退出,畢竟中斷要輪詢(xún),要嵌套。你直接while住,函數(shù)怎么跑。

51hei截圖20211026084256.png (40.79 KB, 下載次數(shù): 60)

51hei截圖20211026084256.png
回復(fù)

使用道具 舉報(bào)

6#
ID:592807 發(fā)表于 2021-10-26 08:47 | 只看該作者
yzwzfyz 發(fā)表于 2021-10-25 16:10
如果你說(shuō)的是真實(shí)的,則外中斷后,跳入中斷服務(wù)程序執(zhí)行,外中斷服務(wù)程序在下列情況下會(huì)死機(jī):
1、沒(méi)有寫(xiě) ...

他在中斷處理函數(shù)里面放了while
回復(fù)

使用道具 舉報(bào)

7#
ID:958310 發(fā)表于 2021-10-26 09:06 | 只看該作者
在中斷里延時(shí),,真有你的哦
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表