|
在stm32中f103單片機(jī)中,如果程序不小心寫錯了,誤操作了JTAG接口的 JTMS,JTCK,會是什么結(jié)果?
1、近來做項目,開始程序?qū)懙煤茼,樣機(jī)調(diào)起來很順手,后來突然“工控屏”與開發(fā)板連接失效,昨天周六(單休)在公司調(diào)了一天,發(fā)現(xiàn)是一個初始化函數(shù)造成的。但這個部件的初始化,與開發(fā)板(stm32f103vct6)和“工控屏”的通信完全不相干,感到迷茫。
2、今天,周日,因項目催的緊,在家找這個程序的 bug, 最終發(fā)現(xiàn): 本意是把 PE13,PE14 設(shè)置成 推挽輸出,再初始化 PE13=;E14=0; 由于是拷貝復(fù)制的,沒有完全修改好,把PA13,PA14 設(shè)置成了 推挽輸出,PE13=;E14=0。
3、而 PA13,PA14,是 JTAG接口的 JTMS,JTCK,故我認(rèn)為,是程序誤操作了JTAG接口的 JTMS,JTCK,CPU亂了,是故障的原因。當(dāng)然我也無法深層次解析。
4、到底,判斷正不正確,明天上班,在公司的樣機(jī)上,一試就清楚了。
5、也請高手,發(fā)表一下,見解。
6、我也有點迷惑,雖然,誤把 JTAG接口的 JTMS,JTCK,(即 PA13,PA14)設(shè)置成推挽輸出, 肯定是出了問題;但其后,程序中,操作的是 PE13=;E14=0; 并未直接操作 JTAG接口的 JTMS,JTCK,(即 PA13,PA14),怎么 CPU 會亂? 也還是有點欠說法。
7、完蛋了。 剛才,找了一塊開發(fā)板,寫了把JTAG接口的 JTMS,JTCK,(即PA13,PA14),設(shè)置成 推挽輸出的語句, 一試,程序絲毫不受影響,仍能正常運行如初,說明我找的這個原因,不對。
8、柳岸花明又一村: 在我垂頭喪氣,只好出去走一走,但仍不甘心,放松下來,走到走到,腦殼來電了,突然,想到,這個部件的初始化函數(shù)中,還有 PC10,同樣的情況,就是說,本意是把PC10設(shè)置成 “推挽輸出”,但實際上是,誤把 PA10(USART1_Rx)設(shè)置為了 “推挽輸出”,這當(dāng)然,就無法接收“工控屏”上傳的信號,原來,真正的 bug 在這里,這就可以肯定是---“工控屏”與開發(fā)板連接失效的原因了,困擾兩天的問題,終于迎刃而解了。 完美。!
|
|