STM32+ucosll程序跑飛問題解決辦法
STM32單片機(jī)移植ucosll程序,運(yùn)行幾個(gè)小時(shí)之后跑飛。
ucsll創(chuàng)建4個(gè)任務(wù),OSQPend()消息隊(duì)列任務(wù),1s定時(shí)任務(wù),2s定時(shí)任務(wù),按鍵掃描任務(wù)。其中OSQPend()消息隊(duì)列任務(wù)優(yōu)先級(jí)最高,用于接收各中斷消息,由于消息隊(duì)列在沒有消息時(shí)會(huì)將任務(wù)掛起,所有沒有添加延時(shí)函數(shù)。
一開始懷疑堆棧溢出,將單片機(jī)棧區(qū)擴(kuò)大,各任務(wù)堆棧也擴(kuò)大,仍然無(wú)效。
多次測(cè)試發(fā)現(xiàn),程序跑飛后OSQPend()消息隊(duì)列任務(wù)仍然能夠接受中斷消息,懷疑優(yōu)先級(jí)有問題,將消息隊(duì)列任務(wù)的優(yōu)先級(jí)調(diào)至最低,再未遇到程序跑飛情況。
只是仍然不解為何會(huì)停留在消息隊(duì)列任務(wù)中??!