使用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;
}
0