野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1518|回复: 5

串口和通用定时器相互影响的原因

[复制链接]
发表于 2023-7-19 17:21:30 | 显示全部楼层 |阅读模式
为什么stmf103的串口和通用定时器会相互影响,当定时器的中断频率很高时


回复

使用道具 举报

发表于 2023-7-20 09:14:44 | 显示全部楼层
定时器中断里面写了什么耗时的流程?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-20 17:31:33 | 显示全部楼层
WishWish 发表于 2023-7-20 09:14
定时器中断里面写了什么耗时的流程?

void TIM2_IRQHandler(void)
{
  if ( TIM_GetITStatus (TIM2, TIM_IT_Update) != RESET )               
        {       
                delay1 --;
                TIM_ClearITPendingBit ( GENERAL_TIM, TIM_FLAG_Update );                
        }
}
这是定时器中断中写的内容,只是对全局变量减1。当我把定时器的中断频率降低,AAR寄存器写的值增大后,就没有影响串口输出了。请问这是为什么呢?
回复 支持 反对

使用道具 举报

发表于 2023-10-10 11:27:31 | 显示全部楼层
相互影响,具体现象呢,可能是中断时间短,在串口输出期间进入中断了,打断串口通讯了
回复 支持 反对

使用道具 举报

发表于 2023-10-11 09:32:32 | 显示全部楼层
中断频段进入,可能存在某时刻打算了串口的中断,导致串口数据其中一位或者一字节丢失。
修改方法:1、调整串口和定时器中断的优先级。2、调整中断进入频次(但也会存在打段串口数据接收的情况,概率会相对减少,这不是最终解决办法)。
      
回复 支持 反对

使用道具 举报

发表于 2023-10-13 09:39:06 | 显示全部楼层
我也遇到了同样的状况,我用串口2接RS485,串口1打印串口2接收和发送的数据,在调试中发现延时程序有问题,不加延时收发太快,加了延时就不正确。后来没有办法写了个时间延时函数不调用原来的延时库函数。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-1 07:27 , Processed in 0.053527 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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