打印

STM32的串口中断最大处理时间

[复制链接]
2249|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
inurl|  楼主 | 2013-1-19 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32 波特率设成 115200*4 ,那么它传输一位时间是 1/115200/4  = 2.17us左右

收全一个字节要 (8+1+1)*2.17 = 20us

现在实测串口中断处理函数处理时间要 9us (包括等待一个字节接收完毕时间),这个时间够吗 ?

stm32串口没有FIFO ,真是让人啄级啊。

STM32是收到了一个起始位就产生了硬件中断吗? 然后再在中断处理函数里面等待硬件接收完毕一个字节?

沙发
uet_cache| | 2013-1-19 09:50 | 只看该作者
肯定接收完毕后才置位。
你的波特率这么高,可以连续收完,再退出中断,进行处理。

使用特权

评论回复
板凳
airwill| | 2013-1-19 10:09 | 只看该作者
本帖最后由 airwill 于 2013-1-19 10:10 编辑

通常是没有问题的. 由于 NVIC 是有优先级的. 还得看其他高优先级中断的时间.
另外, 由于 USART 是带缓冲的, 中断时间最长(偶尔达) 40uS 也没有问题.
如果这个时间也不能保证, 那你考虑 DMA 吧

使用特权

评论回复
地板
ljxh401| | 2013-1-19 10:45 | 只看该作者
DMA 可以代替 fifo 啊 随便你怎么设置

使用特权

评论回复
5
inurl|  楼主 | 2013-2-18 18:49 | 只看该作者
airwill 发表于 2013-1-19 10:09
通常是没有问题的. 由于 NVIC 是有优先级的. 还得看其他高优先级中断的时间.
另外, 由于 USART 是带缓冲的, ...

DMA有个问题, 他要设置一个固定的DMA接收长度才进中断,但是串口数据无法固定长度

使用特权

评论回复
6
inurl|  楼主 | 2013-2-18 18:50 | 只看该作者
ljxh401 发表于 2013-1-19 10:45
DMA 可以代替 fifo 啊 随便你怎么设置

DMA有个问题, 他要设置一个固定的DMA接收长度才进中断,但是串口数据无法固定长度

使用特权

评论回复
7
LDTEST| | 2013-2-18 19:06 | 只看该作者
对发送的消息做处理 带有长度,然后根据长度用DMA接收

使用特权

评论回复
8
inurl|  楼主 | 2013-2-21 13:41 | 只看该作者
LDTEST 发表于 2013-2-18 19:06
对发送的消息做处理 带有长度,然后根据长度用DMA接收

有点麻烦, 在用UART IDLE中断+DMA 做

使用特权

评论回复
9
LDTEST| | 2013-2-21 13:51 | 只看该作者
inurl 发表于 2013-2-21 13:41
有点麻烦, 在用UART IDLE中断+DMA 做

...好方法!

使用特权

评论回复
10
inurl|  楼主 | 2013-2-21 19:23 | 只看该作者
LDTEST 发表于 2013-2-21 13:51
...好方法!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

293

帖子

1

粉丝