基于STM32的一个产品,软件运行一定的时间(好多天)后,发现数据传输存在中断现象。好郁闷的,刚开始一直都很正常的,于是开始检查原因。
软件主要功能有,蓝牙,串口,SD 卡,ADC 信号采集及处理,存储,USB 转串口,PWM控制蜂鸣器等。现象:除了串口数据传输有时会丢失之外,一切都正常。后来把数据同步向USB 转串口传输,发现当出现串口停顿的时候,USB 转串口依然正常。基本上可以确定是跟串口的硬件相关。但为什么串口会坏呢?3个样机都一样的问题啊。
再检查原理图:使用PA2/PA3对应的UART2,PB10/TIM2_CH3,发现TIM2_CH3的默认输出是PA2,REMAP之后是PB10。我是使用TIM2_CH3产生的PWM控制蜂鸣器的,而蜂鸣器不是一直在响的,关闭的时候,我把对应的REMAP功能取消:GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,DISABLE);
这时候TIM2_CH3的输出是不是变成了PA2了? 这样UART2和PWM 打架了?
为什么UART1 也受影响了呢?
如果UART 之间有关联的话可以解释的通。
还请ST 的专家帮忙分析。
我现在已经去掉PWM 了,直接使用定时器来控制IO(PB10)来控制蜂鸣器,继续观察。 |