OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3977|回复: 9

怎么在串口以十六进制发送语句

[复制链接]

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
发表于 2018-3-11 17:25:11 | 显示全部楼层 |阅读模式
12金钱
我直接在程序中添加语句,printf("7F");串口调试助手会直接打印“7F”,但是将软件的“16进制显示”勾上,会变成“37 45”
但是我要的目的就是勾上“16进制显示”时,串口打印是“7F”。
要用什么语句才行?或者有什么函数可以实现

2.jpg
1.jpg

最佳答案

查看完整内容[请看2#楼]

终于弄清楚了,这个方法是正确的,我硬件RXD和TXD接错。。。导致只有串口助手能输出,但是根本没输出到模块上
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-11 17:25:12 | 显示全部楼层
142zjb 发表于 2018-3-11 20:32
换了种思路,
char wav[6]={0x7E,0x04,0x03,0x00,0x0B,0xEF};
for(t=0;tDR=wav[t];

终于弄清楚了,这个方法是正确的,我硬件RXD和TXD接错。。。导致只有串口助手能输出,但是根本没输出到模块上
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-11 17:25:59 | 显示全部楼层
7E。。打成7F了,但是就是想知道怎么解决这个方法
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-11 19:28:40 | 显示全部楼层
有人用串口传输数据时遇到过这个问题吗
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-11 19:52:51 | 显示全部楼层
其实就是想实现“串口调试助手”这个软件中“16进制发送”的这个功能
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-11 20:05:57 | 显示全部楼层
我有个模块需要stm32用串口以“16进制发送”“7E 04 03 00 0B EF”才能使用
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-11 20:32:02 | 显示全部楼层
142zjb 发表于 2018-3-11 20:05
我有个模块需要stm32用串口以“16进制发送”“7E 04 03 00 0B EF”才能使用

换了种思路,
char wav[6]={0x7E,0x04,0x03,0x00,0x0B,0xEF};
for(t=0;t<6;t++)
{
        USART1->DR=wav[t];
        while((USART1->SR&0x40)==0);       
}
串口打印出来的数据需要以“16进制显示”了,但是还是用不了
只能单纯使用串口助手,以“16进制发送”这串,才能使用
回复

使用道具 举报

0

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
582
金钱
582
注册时间
2017-6-2
在线时间
192 小时
发表于 2018-3-12 09:16:20 | 显示全部楼层
现在库函数太丰富了,简单的反而不会了?

你看下printf的实现就知道了,以前单片机没这些库函数的之后反而是你想发“7F”,需要自己写的比较复杂
回复

使用道具 举报

0

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-6-19
在线时间
64 小时
发表于 2018-3-12 11:41:10 | 显示全部楼层
printf("%c%c%c%c%c%c",0x7E,0x04,0x03,0x00,0x0B,0xEF);
或者
char buf[6]={0x7E,0x04,0x03,0x00,0x0B,0xEF};
printf("%s",buf);
回复

使用道具 举报

41

主题

226

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
481
金钱
481
注册时间
2017-7-29
在线时间
233 小时
 楼主| 发表于 2018-3-13 16:29:54 | 显示全部楼层
余泽煌 发表于 2018-3-12 11:41
printf("%c%c%c%c%c%c",0x7E,0x04,0x03,0x00,0x0B,0xEF);
或者
char buf[6]={0x7E,0x04,0x03,0x00,0x0B,0 ...

试了一下,确实也是可以的,感觉自己确实有点菜了
不过第二种方法,只能打印出,0x7E,0x04,0x03
0x00被当成结束符了,但是我那个模块,这个0x00是没办法省去的,第一种方法可以说是简单有效了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 20:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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