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

QQ登錄

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

搜索
查看: 2840|回復(fù): 8
收起左側(cè)

問(wèn)下大家 ,單片機(jī)程序仿真剛開(kāi)始時(shí)可以進(jìn)入while1循環(huán)

[復(fù)制鏈接]
ID:630212 發(fā)表于 2023-7-24 14:49 | 顯示全部樓層 |閱讀模式
50黑幣
然后程序運(yùn)行20s左右 主函數(shù)中while1 循環(huán)進(jìn)不去了,這有可能是什么原因?有中斷標(biāo)志沒(méi)關(guān)嗎?導(dǎo)致頻繁進(jìn)入中斷,
所以不能進(jìn)入while1循環(huán)。還有其他可能的情況嗎?

回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-7-24 16:17 | 顯示全部樓層
既然你有能力知道進(jìn)不去主循環(huán)while(1),為什么不告訴大家在哪里運(yùn)行呢?
回復(fù)

使用道具 舉報(bào)

ID:630212 發(fā)表于 2023-7-24 16:30 | 顯示全部樓層
Hephaestus 發(fā)表于 2023-7-24 16:17
既然你有能力知道進(jìn)不去主循環(huán)while(1),為什么不告訴大家在哪里運(yùn)行呢?

我用的是stm32,他進(jìn)不去while1循環(huán)時(shí)候一直在串口中斷函數(shù)里面循環(huán),
回復(fù)

使用道具 舉報(bào)

ID:630212 發(fā)表于 2023-7-24 16:32 | 顯示全部樓層
Hephaestus 發(fā)表于 2023-7-24 16:17
既然你有能力知道進(jìn)不去主循環(huán)while(1),為什么不告訴大家在哪里運(yùn)行呢?

void USART1_IRQHandler(void)
{   
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                        //接收中斷觸發(fā)
        {

               
                if(Enable_rx_timeout_flag == 0)
                {
                        Enable_rx_timeout_flag = 1;
                        Rx_timeout_count = 0;
                        TIM_Cmd(TIM3,ENABLE);                                                                        //使能定時(shí)器3
                }
                Rx_timeout_count = 0;               
                               
        }       
       
        if(USART_GetITStatus(USART1,USART_IT_TXE) != RESET)                                //發(fā)送中斷觸發(fā)       
        {               
                Send_Data();
        }
}  

因?yàn)闆](méi)有清除中斷標(biāo)志位?
回復(fù)

使用道具 舉報(bào)

ID:1015233 發(fā)表于 2023-7-24 16:33 | 顯示全部樓層
程序死在中斷里面了,不然打不斷while(1)。建議用多用幾個(gè)printf打印到電腦上,看程序真實(shí)運(yùn)行到哪一步了,哪一步?jīng)]運(yùn)行
回復(fù)

使用道具 舉報(bào)

ID:320306 發(fā)表于 2023-7-24 16:39 | 顯示全部樓層
是不是有別的中斷,程序運(yùn)行到中斷里面去了?
回復(fù)

使用道具 舉報(bào)

ID:1089502 發(fā)表于 2023-7-24 16:44 | 顯示全部樓層
在程序仿真開(kāi)始時(shí)進(jìn)入 while(1) 循環(huán)的一種可能原因是啟動(dòng)代碼或初始化代碼中存在錯(cuò)誤。  請(qǐng)確保你在程序的開(kāi)頭正確設(shè)置了系統(tǒng)時(shí)鐘和引腳功能。此外,還需要檢查是否初始化了必要的外設(shè)和設(shè)置中斷優(yōu)先級(jí)以及全局中斷使能。
回復(fù)

使用道具 舉報(bào)

ID:1089502 發(fā)表于 2023-7-24 16:44 | 顯示全部樓層
在程序仿真開(kāi)始時(shí)進(jìn)入 while(1) 循環(huán)的一種可能原因是啟動(dòng)代碼或初始化代碼中存在錯(cuò)誤。

請(qǐng)確保你在程序的開(kāi)頭正確設(shè)置了系統(tǒng)時(shí)鐘和引腳功能。此外,還需要檢查是否初始化了必要的外設(shè)和設(shè)置中斷優(yōu)先級(jí)以及全局中斷使能。
回復(fù)

使用道具 舉報(bào)

ID:630212 發(fā)表于 2023-7-28 09:09 | 顯示全部樓層
嘿嘿嘿l 發(fā)表于 2023-7-24 16:33
程序死在中斷里面了,不然打不斷while(1)。建議用多用幾個(gè)printf打印到電腦上,看程序真實(shí)運(yùn)行到哪一步了, ...

是,發(fā)現(xiàn)串口接收中斷即使沒(méi)有接收數(shù)據(jù)任務(wù),串口接收中斷也會(huì)被觸發(fā),進(jìn)而打斷while循環(huán)
網(wǎng)上查了下說(shuō)是ORE標(biāo)志位問(wèn)題,目前正在解決
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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