STM32F407的ADC采集到的数据为12位,而存入SD卡的数据只能是八位的,怎么解决??求大神帮忙!感谢

2019-07-20 02:54发布

如题,我定义了uint16_t  ADC_ConvertedValue1[100];//ADC采样结果缓存,16为的
                    uint8_t buf1[1200];//要写入SD卡的数据缓存,我个人理解(不知道对不对):因为SD卡写入的数据只能是八位的
所以我进行了:buf1[0]=(uint8_t)(ADC_ConvertedValue6[0]>>8);
                        buf1[1]=(uint8_t)(ADC_ConvertedValue6[0]);//把16位的ADC数据分离,然后分别赋给buf1
但是写到SD卡里面是一堆乱码,而写入的总文件大小和程序设计的一样,请问各位兄弟,这个问题怎么解决?感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
正点原子
1楼-- · 2019-07-20 08:38
回复【7楼】Mars_man:
---------------------------------
NO
直接就写ADC_ConvertedValue1即可,写入数据位100*2字节即可。
要熟练使用指针啊。
ADC_ConvertedValue1强制换换为u8*,那么就是指向200字节的u8指针了,这样,写入SD卡,就是原来的ADC_ConvertedValue1里面的数据。

你搞懂ascii和数字的区别,就知道怎么处理了。
hyghyg1234
2楼-- · 2019-07-20 11:20
 精彩回答 2  元偷偷看……
Mars_man
3楼-- · 2019-07-20 15:22
在线等,希望各位予以帮助
xuande
4楼-- · 2019-07-20 20:06
道理没错,不知道哪里处理错了。
xuande
5楼-- · 2019-07-20 20:12
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-07-20 22:50
你直接定义u16存入即可。
另外,你存储数据,应该以ASCII存储,才能电脑直接查看,否则存储成.bin文件了。