关于单片机串口通信的问题,学生求教!!

华丽的小猪 2016-11-01 11:34:57
我使用单片机发数据,使用电脑的串口助手查看发送的情况,我想发送的数据是0xEF,0x01,0xFF,0xFF,0xFF,0xFF,为什么单片机会发送0xEF,0xEF,0x01,0xFF,0xFF,0xFF,0xFF,就是前面多了一个0xEF!



...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
华丽的小猪 2016-11-03
  • 打赏
  • 举报
回复
引用 5 楼 of123的回复:
可能芯片中有 FIFO 缓存,且首次发送时标志初始值非 0,致使首字节被写入 2 次。 试试: TI = 0; for(i=0;i<6;i++)Send_uart(FP_Pack_Head[i]); ......
我把通信写进了外部中断里面,就正常了!我觉得您说的也很有道理!
华丽的小猪 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 tw2429的回复:
直接跳过一个字节发送,可以暂时出货,到时再慢慢想看怎么解决
谢谢啦!虽然最后我也没改,但可以正常通信了!
华丽的小猪 2016-11-03
  • 打赏
  • 举报
回复
引用 3 楼 侦探蜡笔小新的回复:
你把单字节发送改成发送字符串试试

void Send_uart(unsigned char * str)
{
unsigned char *pt;
pt = str;
while('\0' != *pt)
{
SBUF = *pt;
while(!TI);
pt++;
TI = 0;
}
}
谢谢啦!虽然最后我也没改,但可以正常通信了!
of123 2016-11-02
  • 打赏
  • 举报
回复
可能芯片中有 FIFO 缓存,且首次发送时标志初始值非 0,致使首字节被写入 2 次。 试试: TI = 0; for(i=0;i<6;i++)Send_uart(FP_Pack_Head[i]); ......
tw2429 2016-11-01
  • 打赏
  • 举报
回复
直接跳过一个字节发送,可以暂时出货,到时再慢慢想看怎么解决
侦探蜡笔小新 2016-11-01
  • 打赏
  • 举报
回复
你把单字节发送改成发送字符串试试

void Send_uart(unsigned char * str)
{
unsigned char *pt;
pt = str;
while('\0' != *pt)
{
SBUF = *pt;
while(!TI);
pt++;
TI = 0;
}
}
华丽的小猪 2016-11-01
  • 打赏
  • 举报
回复
引用 1 楼 g62r83t27 的回复:
你把首字节改成别的看看多出来的是什么
改什么,就多什么
侦探蜡笔小新 2016-11-01
  • 打赏
  • 举报
回复
你把首字节改成别的看看多出来的是什么

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧