簡體   English   中英

STM32F103:定時器會干擾uart嗎?

[英]STM32F103: Is timer can interfere with uart?

我有一個簡單的程序,它從 UART 接口接收數據並驅動 WS2812b LED 燈條。 所以,我使用 USART3 來接收數據(在 IRQ 模式下)和 T3C2(定時器 3,通道 2)來驅動 LED。 這是代碼: https : //hastebin.com/rucumovero.cpp

如果我在不啟用計時器的情況下使用 uart 接口 - 一切正常,但是當我啟用它時 - 我開始丟失數據。 例如,這里的日志如果我發送 5 個類似的 32 字節數據包 [0x41..0x60]

read 29 byte(s): 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 
read 29 byte(s): 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 60 
read 28 byte(s): 41 42 43 44 45 46 47 48 49 4A 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5D 5E 5F 60 
read 29 byte(s): 41 42 43 44 45 46 47 48 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 5A 5B 5C 5D 5E 5F 60

每次丟失 3~4 個字節。

我嘗試使用不同的波特率、不同的 usart 端口 - 結果是一樣的。 在第 142 行設置定時器間隔:

timer_set_period(TIM3, WSP);

哪里

#define TICK_NS (1000/72)
#define WSP (1300 / TICK_NS)

如果我要評論這一行 - 問題就會消失,但是,當然,如果沒有它,我將無法驅動 LED。

因此,看起來我無法同時驅動 WS2812b LED 並從 UART 接收數據。 它應該表現得像這樣嗎? 知道我該如何解決嗎? 非常感謝!

看來是定時器的中斷影響了串口接收中斷。

請檢查串行中斷優先級是否高於其他優先級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM