標(biāo)題: STM32單片機(jī)啟用多個(gè)定時(shí)器會(huì)影響其他端口嗎? [打印本頁(yè)]

作者: sr861126    時(shí)間: 2023-4-4 17:19
標(biāo)題: STM32單片機(jī)啟用多個(gè)定時(shí)器會(huì)影響其他端口嗎?
STM32 啟用2個(gè)定時(shí),一個(gè)喂狗,另外一個(gè)亮燈計(jì)數(shù),但是總是燈亮的不正常,該怎么設(shè)置

作者: Hephaestus    時(shí)間: 2023-4-4 19:44
先把狗關(guān)了停止喂狗定時(shí)器,然后看看亮燈的是否正常。
作者: rayin    時(shí)間: 2023-4-5 10:28
喂狗的周期要比定時(shí)器的周期長(zhǎng). 定時(shí)器的中斷改變燈的ON,off狀態(tài). 可能是喂狗超時(shí)系統(tǒng)復(fù)位了, 導(dǎo)致燈的on,off狀態(tài)受到影響
作者: 可樂(lè)11A    時(shí)間: 2023-4-6 11:39
看優(yōu)先級(jí),看周期
作者: rctty    時(shí)間: 2023-4-6 14:16
定時(shí)器中斷里喂狗?這不是只能防止跑飛,但不能防進(jìn)入死循環(huán);亮燈估計(jì)中斷里任務(wù)太多跑不過(guò)來(lái),區(qū)分一下中斷優(yōu)先級(jí),高優(yōu)先級(jí)嵌套就行
作者: sr861126    時(shí)間: 2023-4-7 09:23
可樂(lè)11A 發(fā)表于 2023-4-6 11:39
看優(yōu)先級(jí),看周期

應(yīng)該是兩個(gè)定時(shí)器開(kāi)啟了,導(dǎo)致中斷都在進(jìn)行,定時(shí)器出現(xiàn)互相干涉的現(xiàn)象
作者: sr861126    時(shí)間: 2023-4-7 09:47
可樂(lè)11A 發(fā)表于 2023-4-6 11:39
看優(yōu)先級(jí),看周期

  和優(yōu)先級(jí)沒(méi)有關(guān)系,是開(kāi)啟了2個(gè)定時(shí)器導(dǎo)致另一個(gè)不正常,關(guān)掉一個(gè)就可以了,怎么讓2個(gè)定時(shí)器同時(shí)工作,不相互干涉
作者: yuxuesuixing    時(shí)間: 2023-4-7 11:28
1.喂狗不能用定時(shí)器,用定時(shí)器喂狗就和沒(méi)開(kāi)狗一樣,定時(shí)器出問(wèn)題也就是多中斷快速觸發(fā)阻塞了低優(yōu)先級(jí)定時(shí)器中斷,那就是軟件系統(tǒng)出大問(wèn)題了,或者晶振壞了,硬件出大問(wèn)題了,用定時(shí)器喂狗等于脫褲子放屁,還不如不開(kāi)狗。

2.兩個(gè)定時(shí)器工作是不受影響的,因?yàn)槎〞r(shí)器是獨(dú)立的硬件,所有定時(shí)器一塊用也是沒(méi)問(wèn)題的,只是中斷會(huì)占用更多的系統(tǒng)時(shí)間而已。

由1得出題主基礎(chǔ)不足,那2發(fā)生的原理大概率與兩個(gè)定時(shí)器同時(shí)侵占了資源導(dǎo)致,所以猜測(cè)有以下幾種情況
A:兩個(gè)定時(shí)器使用了相同的全局變量,變量增減異常,導(dǎo)致數(shù)據(jù)錯(cuò)亂。
B:定時(shí)器修改的是狀態(tài)值,但開(kāi)關(guān)燈是在主程序中執(zhí)行的,主程序僅讀取了狀態(tài)值,在某些優(yōu)化下,主程序優(yōu)化效率將狀態(tài)值保存到內(nèi)部寄存器,那該狀態(tài)值需要用volatile關(guān)鍵字修飾(適用于51 ,32內(nèi)存結(jié)構(gòu)不太了解)
C:使用了相同名稱(chēng)的全局變量和局部變量,編譯器沒(méi)有發(fā)現(xiàn)(我的keil出現(xiàn)過(guò)幾次),變量右鍵跳轉(zhuǎn)到定義位置就發(fā)現(xiàn)了錯(cuò)誤,修改不同名稱(chēng)即可。
作者: sr861126    時(shí)間: 2023-4-7 17:49
yuxuesuixing 發(fā)表于 2023-4-7 11:28
1.喂狗不能用定時(shí)器,用定時(shí)器喂狗就和沒(méi)開(kāi)狗一樣,定時(shí)器出問(wèn)題也就是多中斷快速觸發(fā)阻塞了低優(yōu)先級(jí)定時(shí)器 ...

  我把喂狗的定時(shí)器關(guān)閉就正常了,其實(shí)邏輯很簡(jiǎn)單的,一個(gè)定時(shí)器15ms'喂狗一次,另外的一個(gè)1s閃爍led,
    把喂狗關(guān)了,led開(kāi)關(guān)正常進(jìn)入定時(shí)器




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1