在imxrt1052的板子上使用ch438芯片,我是移植在nuttx操作系統(tǒng)的,用某一個口不斷去收發(fā),發(fā)現(xiàn)每次只能觸發(fā)一次中斷,由于在中斷函數(shù)里進行了信號量的釋放,所以后面觸發(fā)不了中斷導致讀的時候等不到信號量,就卡死了,大家有遇到過嗎
熱門產(chǎn)品 :
CH32X035: 32位USB+USB PD單片機
在imxrt1052的板子上使用ch438芯片,我是移植在nuttx操作系統(tǒng)的,用某一個口不斷去收發(fā),發(fā)現(xiàn)每次只能觸發(fā)一次中斷,由于在中斷函數(shù)里進行了信號量的釋放,所以后面觸發(fā)不了中斷導致讀的時候等不到信號量,就卡死了,大家有遇到過嗎
您好,CH438的中斷方式為低電平觸發(fā)方式,您可以將您的主控芯片中斷觸發(fā)方式設置為低電平。如果主控芯片沒有這種觸發(fā)方式,您可以在中斷服務函數(shù)處理的最后,判斷INT腳是否繼續(xù)為低,如果是的話,就別釋放信號量
@?2#?那這樣如果引腳持續(xù)為低,信號量永遠得不到釋放,讀取不到數(shù)據(jù)
那您在釋放信號量的之后,處理的線程這里處理函數(shù)到最后,在讀取一下主控IO管腳的電平狀態(tài)。沒有就正常結束。有低電平再去處理,沒有就是正常釋放信號量。