打印

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

[复制链接]
14460|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)
          {
                   
        }
}
不做任何初始化

使用特权

评论回复
5
serac|  楼主 | 2010-3-30 17:25 | 只看该作者
不做任何初始化,上电了几次都这样

截图00.png (25.01 KB )

截图00.png

使用特权

评论回复
6
香水城| | 2010-3-30 17:53 | 只看该作者
请用示波器测量一下STM32的TX引脚的电平,非常怀疑这个问题是由于你的电路板上的其他器件引起的,比如RS232转换芯片。

STM32的I/O引脚在复位后是高阻状态,不可能被识别为0,除非芯片损坏。

使用特权

评论回复
7
yybj| | 2010-3-30 20:28 | 只看该作者
如果不是初始化问题,很可能就是硬件问题导致的

使用特权

评论回复
8
cwei85| | 2010-3-31 12:06 | 只看该作者
应该是硬件问题,我遇到过

使用特权

评论回复
9
gaopetrel| | 2010-4-1 13:08 | 只看该作者
应该是硬件问题

使用特权

评论回复
10
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顺序对了,硬件那个没试,明天试下,以上是网上别人的帖子,我转来,你试试吧

使用特权

评论回复
11
金融小数| | 2013-4-15 21:22 | 只看该作者
这个问题的关键的是使用的那一款RS232芯片。某些公司的RS232芯片上电时TX引脚上出现一个类似数据为0的信号。感觉好像处于复位状态似的。用示波器可以抓到的

使用特权

评论回复
12
handlike| | 2013-4-15 21:40 | 只看该作者
串口通信中常有的事。
用232转485模块上电时经常遇到,用做个协议过滤掉它。

使用特权

评论回复
13
xiaoming9029| | 2013-10-12 16:59 | 只看该作者
小弟的板子遇到了一个掉电串口发送00的现象 搞了半天也没解决 哪位高手指点一下

使用特权

评论回复
14
pattywu| | 2013-10-12 18:28 | 只看该作者
    10楼说的对,先初始化USART寄存器,等过了一个字符的发送时间再,再初始化TX引脚。
    ST的参考手册上说明。
    每次执行TX使能的时候,会发送一个无效字符0x00.

使用特权

评论回复
15
是电子爱好者| | 2014-3-28 17:02 | 只看该作者
到底是个什么原因?我也遇到了这个问题

使用特权

评论回复
16
huangfeng33| | 2014-4-2 15:42 | 只看该作者
说明你程序有错误,而不能跳到启动。

使用特权

评论回复
17
xlsbz| | 2014-11-6 08:21 | 只看该作者
pattywu 发表于 2013-10-12 18:28
10楼说的对,先初始化USART寄存器,等过了一个字符的发送时间再,再初始化TX引脚。
    ST的参考手册上 ...

哪个手册 帅哥

使用特权

评论回复
18
putron09| | 2014-11-28 14:36 | 只看该作者
10楼和14楼的说的很对啊

使用特权

评论回复
19
hlong0033| | 2014-11-28 14:43 | 只看该作者
硬件造成的与芯片无关

使用特权

评论回复
20
zhitao2072| | 2018-1-5 11:19 | 只看该作者
我也遇到了这个问题,延时配置不行啊。

使用特权

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

本版积分规则

11

主题

31

帖子

0

粉丝