首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >STM32F103:定时器会干扰uart吗?

STM32F103:定时器会干扰uart吗?
EN

Stack Overflow用户
提问于 2017-12-28 18:46:30
回答 2查看 652关注 0票数 0

我有一个简单的程序,它接收数据从串口和驱动WS2812b发光二极管条带。因此,我使用USART3接收数据(在IRQ模式下),使用T3C2 (定时器3,通道2)来驱动LED。下面是代码:https://hastebin.com/rucumovero.cpp

如果我在没有启用计时器的情况下使用uart接口-一切都运行得很完美,但当我启用它时-我就开始丢失数据。例如,这里的日志是如果我发送5个类似的32字节数据包0x41..0x60

代码语言:javascript
运行
复制
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行有设置计时器间隔:

代码语言:javascript
运行
复制
timer_set_period(TIM3, WSP);

哪里

代码语言:javascript
运行
复制
#define TICK_NS (1000/72)
#define WSP (1300 / TICK_NS)

如果我要评论这行-问题将消失,但,当然,我将无法驱动LED没有它。

因此,看起来我不能同时驱动WS2812b leds和接收来自UART的数据。它应该是这样的吗?你知道我怎么才能修复它吗?非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2018-01-05 11:15:06

似乎是定时器的中断影响了串口接收中断。

票数 0
EN

Stack Overflow用户

发布于 2018-01-09 14:14:51

请检查串行中断优先级是否高于其他优先级。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48006034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档