STM32
直播中

李明聪

7年用户 1143经验值
私信 关注
[问答]

使用STM8S003串口通讯时,只要上电接收就收到一堆00的数据为什么?

使用STM8S003串口通讯时,发现只要上电接收就收到一堆00的数据??调试几天未找到原因
接收、发送的功能都是可以的,但是接收会丢数据 .速率设置都是对的,中断也没有问题
请问软件件可能是和原因造成?谢谢!
补充:PD5是和UART1_TX,AIN5共用的,请问是不是I/O口需要设置?要怎么设置?
目前IO口配置如下,修改为初始的也没有用

I/O初始化
         //-------- 电压检测=PD5口高阻配(Uart_Tx) -----------------------
        PD_DDR amp;=~0B00100000; //
          PD_CR1 amp;=~0B00100000;//0B00100000;
          PD_CR2 amp;=~0B00100000; //PD5口电源电压AD检测        0B00100000;
                //-------- 速度=PD6口高阻配置 (Uart_Rx)--------------------------
        PD_DDR amp;=~0B01000000; //
          PD_CR1 amp;=~0B01000000;//0B01000000
          PD_CR2 amp;=~0B01000000; //PD6口AD检测//0B01000000

void UART1_Init(void)
{        
                 UART1_CR2=0x00;//使发送禁用TEN=0;
                        UART1_CR1=0x00;//设置M字长,8位数据位
                        UART1_CR3=0x00;//1位停止位
                        UART1_SR=0xc0;
                        UART1_GTR=0x00;
                        UART1_CR4=0x00;
                        UART1_GTR=0x00;
                        UART1_PSCR=0x00;
                UART1_BRR2=0x02;
            UART1_BRR1=0x68;
                UART1_CR2 = 0x2c;    //收发使能,收中断开
}

void UART1_sendchar(unsigned char c)
{
PD_ODR|=0x10;
_asm( quot;nop quot;);
_asm( quot;nop quot;);
_asm( quot;nop quot;);
Delay1(100);
while(!(UART1_SR  amp; 0x80));
UART1_DR=c;
_asm( quot;nop quot;);
_asm( quot;nop quot;);
_asm( quot;nop quot;);
_asm( quot;nop quot;);
Delay1(100);
PD_ODR amp;=0xef;
while((UART1_SR  amp; 0x40) ==0);//发送是否完成
}
//UART1接收中断函数:
@far @interrupt void UART1_RX_IRQHandler (void)
{
   RxBuffer = UART1_DR; //Store the received byte in RxBuffer
        // if(RxBuffer!=00)
         {
                UART1_sendchar(RxBuffer);
                }
   return;
}

回帖(1)

冯琳

2024-5-7 15:52:34
你可以先进入烧写模式,或者把串口关闭。看看串口是不是还有这么多的乱码,排除硬件干扰引起的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分