OpenEdv-开源电子网

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

关于操作寄存器进行串口数据传输的问题

[复制链接]

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
发表于 2021-6-30 18:02:05 | 显示全部楼层 |阅读模式
1金钱
下面程序中的ADC_RegularConvertedValueTab[t]数组是用来存放ADC采集到的数据的,数值大约都在2000左右,数组是DMA配置的内存数组,DMA中断中定义Flag为1,也就是当DMA缓存满了256个数据到数组后就中断开启定义flag为1,在主函数循环中将数组数据发送出去。但是目前用寄存器的方法发送数据ASCII码显示为乱码,16进制显示的数值换算成10进制数也与AD值并不对应,请问各位大佬这是什么情况?
这是主函数中的循环 1111111111111111111111111111111111.png

这是ASCII码显示 乱码.png

这是16进制显示: 16进制.png

最佳答案

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

如果说是u16 while(!(USART1->SR & 0x80)); USART1->DR=(u8)ADC_RegularConvertedValueTab[t]; while(!(USART1->SR & 0x80)); USART1->DR=(u8)(ADC_RegularConvertedValueTab[t]>>8);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-6-30 18:02:06 | 显示全部楼层
如果说是u16
   while(!(USART1->SR & 0x80));
   USART1->DR=(u8)ADC_RegularConvertedValueTab[t];
   while(!(USART1->SR & 0x80));
   USART1->DR=(u8)(ADC_RegularConvertedValueTab[t]>>8);
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-6-30 19:40:44 | 显示全部楼层
ADC_RegularConvertedValueTab[t] 是u16 ?
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4098 小时
发表于 2021-7-1 09:10:52 | 显示全部楼层
edmund1234说得对;
adc结果要用两字节才放得下,得发两次。
6天前11楼我也给了代码。
专治疑难杂症
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-7-1 09:11:43 | 显示全部楼层
edmund1234 发表于 2021-6-30 19:43
如果说是u16
   while(!(USART1->SR & 0x80));
   USART1->DR=(u8)ADC_RegularConvertedValueTab[t];

多谢多谢
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-7-1 09:12:32 | 显示全部楼层
LcwSwust 发表于 2021-7-1 09:10
edmund1234说得对;
adc结果要用两字节才放得下,得发两次。
6天前11楼我也给了代码。

谢谢您,我可能还需要调试,因为您给的代码我试过了也是乱码并且16进制的数转为10进制也是不正常的数值
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4098 小时
发表于 2021-7-1 09:15:15 | 显示全部楼层
车嘉炜 发表于 2021-7-1 09:12
谢谢您,我可能还需要调试,因为您给的代码我试过了也是乱码并且16进制的数转为10进制也是不正常的数值

截图看看代码、串口数据,再说下实际电压值。
专治疑难杂症
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4891
金钱
4891
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-7-1 09:41:07 | 显示全部楼层
我每天上论坛看一眼,每天都能看到你的新帖子
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-7-5 15:33:45 | 显示全部楼层
LcwSwust 发表于 2021-7-1 09:15
截图看看代码、串口数据,再说下实际电压值。

感谢大佬,是我之前对他打印出来的16进制数字理解不到位,最后自己想明白了,再次感谢!
回复

使用道具 举报

85

主题

249

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2020-12-5
在线时间
202 小时
 楼主| 发表于 2021-7-5 15:35:16 | 显示全部楼层
阿侑kevin 发表于 2021-7-1 09:41
我每天上论坛看一眼,每天都能看到你的新帖子

哈哈哈因为自己刚开始学习单片机,项目又比较紧张,你们这些大佬人又超级好,就比较频繁的在论坛上问问题,实在麻烦各位了,感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 06:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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