STM32 上电串口发送0是怎么回事

[复制链接]
26876|40
 楼主| serac 发表于 2010-3-30 16:50 | 显示全部楼层 |阅读模式
STM32 上电串口默认发送0是怎么回事,没发送0
IJK 发表于 2010-3-30 16:55 | 显示全部楼层
似乎跟对STM32 串口的TX脚初始化有关。
香水城 发表于 2010-3-30 17:10 | 显示全部楼层
STM32 上电串口默认发送0是怎么回事,没发送0
serac 发表于 2010-3-30 16:50


STM32不可能上电后串口默认发送任何东西,一定是你的初始化程序有问题。
 楼主| serac 发表于 2010-3-30 17:22 | 显示全部楼层
#include"main.h"

void Sys_init(void)
{
        //RCC_Configuration()        ;         /*时钟设置                        */
        //NVIC_Configuration();        /*潜入中断向量设置        */
                /*端口设置                        */
        //UART4_Configuration();        /*串口4设置                        */
        //UART5_Configuration();        /*串口5设置                        */
        //GPIO_Configuration();
        //TIM1_Configuration();
        //TIM8_Configuration(0);        /*定时器8设置                */
}
int main(void)
{
         
        //Sys_init();        //系统初始化
    //GPIO_ResetBits(GPIOB, GPIO_Pin_13); //驱动器低电平DIR顺时针转
        //GPIO_ResetBits(GPIOB, GPIO_Pin_14);//驱动器高电平 FREE
           //TIM_Cmd(TIM1, ENABLE); //开定时器1
        while(1)
          {
                   
        }
}
不做任何初始化
 楼主| serac 发表于 2010-3-30 17:25 | 显示全部楼层
不做任何初始化,上电了几次都这样
截图00.png

评论

十多年了,大哥解决问题了吗,我今天也遇到这个问题了 >=<  发表于 2023-1-25 20:07
香水城 发表于 2010-3-30 17:53 | 显示全部楼层
请用示波器测量一下STM32的TX引脚的电平,非常怀疑这个问题是由于你的电路板上的其他器件引起的,比如RS232转换芯片。

STM32的I/O引脚在复位后是高阻状态,不可能被识别为0,除非芯片损坏。
yybj 发表于 2010-3-30 20:28 | 显示全部楼层
如果不是初始化问题,很可能就是硬件问题导致的
cwei85 发表于 2010-3-31 12:06 | 显示全部楼层
应该是硬件问题,我遇到过
gaopetrel 发表于 2010-4-1 13:08 | 显示全部楼层
应该是硬件问题
wago2008 发表于 2013-4-15 19:30 | 显示全部楼层
无论这么设置USart,上电后都会发送一个无效字符,这个是STATUS寄存器的上电初始值有问题造成的,Usart的发送数据寄存器有一个缓冲移位寄存器。并且发送有两个状态,一个是发送数据寄存器为空,一个是移位寄存器发送完成。上电后Usart的状态寄存器的发送完成位为0,造成了上电以后会始终会有一个值被发送,这个值就是发送移位寄存器中的值,而这个值有时候是0X00有时候是0XFE 。
要解决这个问题,在初始化的时候先初始化Usart,然后再配置Usart的GPIO位,就可以避免Usart上电发送一个无效字符的问题。
还有一种可能性,在上电后至端口初始化,STM32的I/O端口处于高阻状态,有些RS232转换芯片在输入端为高阻时,可能会输出0,从而造成接收端收到0,我们已经多次看到这种现象;这时只需要在STM32的TX端加一个上拉电阻就可以解决。
一般这种问题使用示波器可以很容易地检测出来。
ps:我刚遇到这个问题,我写usart顺序对了,硬件那个没试,明天试下,以上是网上别人的帖子,我转来,你试试吧
金融小数 发表于 2013-4-15 21:22 | 显示全部楼层
这个问题的关键的是使用的那一款RS232芯片。某些公司的RS232芯片上电时TX引脚上出现一个类似数据为0的信号。感觉好像处于复位状态似的。用示波器可以抓到的
handlike 发表于 2013-4-15 21:40 | 显示全部楼层
串口通信中常有的事。
用232转485模块上电时经常遇到,用做个协议过滤掉它。
xiaoming9029 发表于 2013-10-12 16:59 | 显示全部楼层
小弟的板子遇到了一个掉电串口发送00的现象 搞了半天也没解决 哪位高手指点一下
pattywu 发表于 2013-10-12 18:28 | 显示全部楼层
    10楼说的对,先初始化USART寄存器,等过了一个字符的发送时间再,再初始化TX引脚。
    ST的参考手册上说明。
    每次执行TX使能的时候,会发送一个无效字符0x00.
是电子爱好者 发表于 2014-3-28 17:02 | 显示全部楼层
到底是个什么原因?我也遇到了这个问题
huangfeng33 发表于 2014-4-2 15:42 | 显示全部楼层
说明你程序有错误,而不能跳到启动。
xlsbz 发表于 2014-11-6 08:21 | 显示全部楼层
pattywu 发表于 2013-10-12 18:28
10楼说的对,先初始化USART寄存器,等过了一个字符的发送时间再,再初始化TX引脚。
    ST的参考手册上 ...

哪个手册 帅哥
putron09 发表于 2014-11-28 14:36 | 显示全部楼层
10楼和14楼的说的很对啊
hlong0033 发表于 2014-11-28 14:43 | 显示全部楼层
硬件造成的与芯片无关
zhitao2072 发表于 2018-1-5 11:19 | 显示全部楼层
我也遇到了这个问题,延时配置不行啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

31

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部