搜索
bottom↓
回复: 7

stm32串口基本问题--时间特性---理论与实践为什么不一致?

[复制链接]

出0入17汤圆

发表于 2012-12-12 17:45:52 | 显示全部楼层 |阅读模式
假设stm32F103跑到72Mhz,使用串口1的参数115200,8,N,1

串口每发送一位,中间的频率数=72M/115200=625, 手册上说1.25Dmips/Mhz,也就是说在625个晶振期间最多可执行625*1.25条指令,保守一些,假设执行200条指令吧。

则在串口的中断程序是这样的:
void USART1_IRQHandler(void)
{
        uint16_t temp;
        temp=USART1->SR & 0x20;
        if(temp != 0)                    //使用寄存器方式查询是否有接收事件,相当于 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {
            c=USART1->DR;     //接收串口来的数据
          USART1->DR=c;        //将字符通过串口返回去
        }         
}

主程序只有while(1),且没有其他中断。
以上假设完毕

理论: 这样一个中断程序(算上进入中断的时间)在625个晶振期间可以执行完毕。当往单片机串口发送 “ab”的时候,单片机接收到a,立刻将a通过串口返回,单片机再接受b,将b返回,最后上位机也应该收到“ab”,也就是上位机无论发送字符,还是字符串,下位机都应该返回相同的数据。

实践的结果:
Request: 2012-12-12 17:36:34.12864 (+0.3907 seconds)

61 62                                             ab              

Answer: 2012-12-12 17:36:34.12864 (+0.0000 seconds)

7C EC                                             |ì              

Request: 2012-12-12 17:36:35.50364 (+0.3750 seconds)

61 62                                             ab              

Answer: 2012-12-12 17:36:35.51964 (+0.0156 seconds)

5A EC                                             Zì

这个返回结果是错误的。

但是也有正确的时候:
Request: 2012-12-12 17:38:15.06064 (+2.6878 seconds)

72 79 74                                          ryt            

Answer: 2012-12-12 17:38:15.06064 (+0.0000 seconds)

72 79 74                                          ryt
发送ryt,返回ryt


请问这是为什么呢? ^_^

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-12-12 19:16:14 | 显示全部楼层
是不是上位机的问题? 因为PC的WINDOWS是非实时性的,发完后,单片机马上发回,上位机是否没有反应过来!

出0入17汤圆

 楼主| 发表于 2012-12-12 19:32:20 | 显示全部楼层
yupengfei 发表于 2012-12-12 19:16
是不是上位机的问题? 因为PC的WINDOWS是非实时性的,发完后,单片机马上发回,上位机是否没有反应过来! ...

windows即便非实时,但是那么大的windows系统对于外设肯定是有缓冲区的,而且PC的cpu都带DMA,会收到所有发过来的数据。

出0入17汤圆

 楼主| 发表于 2012-12-13 09:18:58 | 显示全部楼层
高手给分析一下

出0入17汤圆

 楼主| 发表于 2012-12-13 09:36:22 | 显示全部楼层
上个我用的测试文件。程序很简单,如果方便,给测一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-6-28 09:51:18 | 显示全部楼层
关注这个问题 不知道有没有搞明白

出0入0汤圆

发表于 2021-1-4 19:30:10 | 显示全部楼层
内核和外设需要时间同步,不是像51那样直接就能执行的

出0入0汤圆

发表于 2021-1-5 08:47:16 | 显示全部楼层
这个问题不应该用逻辑分析仪捕捉数据波形看看嘛
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-7 21:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表