STM8s的串口无法输出0x11和0x13两个数
我用STM8s发送字节,在pc端用串口助手接收查看,比如发送UART_SendChar(0x18);UART_SendChar(0x17);UART_SendChar(0...
我用STM8s发送字节,在pc端用串口助手接收查看,比如发送
UART_SendChar(0x18);
UART_SendChar(0x17);
UART_SendChar(0x16);
UART_SendChar(0x15);
UART_SendChar(0x14);
UART_SendChar(0x13);
UART_SendChar(0x12);
UART_SendChar(0x11);
UART_SendChar(0x10);
但是串口助手只能接收到7个字节,18、17、16、16、14、12、10。而13 和11无法接收到,STM8s没有把这两个字节传输出来。串口初始化的代码如下
void Uart_Init(void)
{
UART1_CR1 = 0x00; // b5 = 0,允许UART, b2 = 0,禁止校验
UART1_CR2 = 0x00; // 禁止串口发送、接收
UART1_CR3 = 0x00; // b5,b4 = 00,1个停止位
//9600波特率下 分频系数208,BBR1=D0,BBR2=00
UART1_BRR2 = 0x00;
UART1_BRR1 = 0x0D;
UART1_CR2 = 0x2C; // b3 = 1,允许发送, b2 = 1,允许接收,b5 = 1,允许产生接收中断
}
void UART_SendChar(unsigned char ch)
{
while((UART1_SR & 0x80) == 0x00); // 若发送寄存器不空,则等待
UART1_CR2= 0x00; //发送使能禁止
UART1_DR = ch; // 将要发送的字符送到数据寄存器
UART1_CR2= 0x08; //发送使能禁开启
while((UART1_SR & 0x40) == 0x00); //发送是否完成
}
串口只是不能输出这两个数,与输出字节的顺序、位置、数量无关
问题已经解决了,是串口调试助手的问题,它接收不到13和11,换了一个软件就可以接收了。
谢谢大家! 展开
UART_SendChar(0x18);
UART_SendChar(0x17);
UART_SendChar(0x16);
UART_SendChar(0x15);
UART_SendChar(0x14);
UART_SendChar(0x13);
UART_SendChar(0x12);
UART_SendChar(0x11);
UART_SendChar(0x10);
但是串口助手只能接收到7个字节,18、17、16、16、14、12、10。而13 和11无法接收到,STM8s没有把这两个字节传输出来。串口初始化的代码如下
void Uart_Init(void)
{
UART1_CR1 = 0x00; // b5 = 0,允许UART, b2 = 0,禁止校验
UART1_CR2 = 0x00; // 禁止串口发送、接收
UART1_CR3 = 0x00; // b5,b4 = 00,1个停止位
//9600波特率下 分频系数208,BBR1=D0,BBR2=00
UART1_BRR2 = 0x00;
UART1_BRR1 = 0x0D;
UART1_CR2 = 0x2C; // b3 = 1,允许发送, b2 = 1,允许接收,b5 = 1,允许产生接收中断
}
void UART_SendChar(unsigned char ch)
{
while((UART1_SR & 0x80) == 0x00); // 若发送寄存器不空,则等待
UART1_CR2= 0x00; //发送使能禁止
UART1_DR = ch; // 将要发送的字符送到数据寄存器
UART1_CR2= 0x08; //发送使能禁开启
while((UART1_SR & 0x40) == 0x00); //发送是否完成
}
串口只是不能输出这两个数,与输出字节的顺序、位置、数量无关
问题已经解决了,是串口调试助手的问题,它接收不到13和11,换了一个软件就可以接收了。
谢谢大家! 展开
2个回答
2017-09-13
展开全部
接收端是如何的,是不是按13判断数据的
~
~
~
~
~
~
追问
接收端是pc上的串口助手,没有判断,只是用来接收16进制数据而已。除了0x13和0x11,其他的字节都能接收到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询