野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2904|回复: 2

串口传递的数据除了0都正确,里面单个0没了,两个0变成...

[复制链接]
发表于 2023-4-13 20:52:42 | 显示全部楼层 |阅读模式
本帖最后由 weilinxia 于 2023-4-13 20:55 编辑

如题,这是中断服务函数
  1. void DEBUG_USART_IRQHandler(void)
  2. {
  3.   uint8_t ch;
  4.         if(USART_GetITStatus(DEBUG_USARTx4,USART_IT_RXNE)!=RESET)
  5.         {               
  6.                 ch=getchar();
  7.     printf("%X",ch);   
  8.         }         
  9. }
复制代码
下面是重定向函数
  1. <blockquote>int fputc(int ch, FILE *f)
复制代码
在串口调试助手里显示的数据
  1. 3C21F30703703604319251459
复制代码
示波器上的数据
  1. 3C0201F300070037003600431902510459
复制代码




回复

使用道具 举报

 楼主| 发表于 2023-4-17 13:48:02 | 显示全部楼层
第二天弄懂了。第一个办法是直接操作寄存器输出,第二个办法是使用
  1. printf("%02X",ch)
复制代码
回复 支持 反对

使用道具 举报

发表于 2023-4-18 09:03:20 | 显示全部楼层

回帖奖励 +10 火花

是的,输出要补0,按2位输出,就是 %02X
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-18 11:08 , Processed in 0.036564 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表