記錄一個藍橋杯串口2的問題
去年整串口的時候也是用的定時器2來當波特率發生器,但是死活不能用,所以去年是用定時器1來當波特率發生器,所以后面國賽的時候吃屎了。
今天在練習第十屆決賽的時候又遇到了這個問題,由于用的是新模板,所以以為是模板里sprintf的問題,但經過排查不是。經過很久的排查發現是一個很抽象的問題即:

定時器1和2的寄存器是混在一起的,所以寫的時候會不小心影響到其他寄存器,

這是他原來的代碼,因為他的auxr寄存器是直接寫入0x14,導致定時器1的東西被覆寫,然后就導致了吃屎的問題。

正確的寫法是,改了官方的=寫成|=這樣,就不會有這個吃屎的問題,所以多模塊同時使用的時候要多考慮是否會出現搶占的情況。
2025.3.18記錄

浙公網安備 33010602011771號