专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
ADC实时采样数据存储在SD卡
2019-08-14 01:08
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
9206
19
1407
小菜鸟一只~正在做一个小项目,需要将ADC采样的数据存储在SD卡。我现在已经会把缓存区内的数据写入SD卡中的.TXT文档中,但是还是不能把实时的AD采样值存储进去,希望大神求教!感谢!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
一直都在的星空
2019-08-15 01:32
小兔天 发表于 2016-9-22 20:13
你现在弄好的程序呢?发出来看看
主函数大概是这样的:初始化,显示初始的一个界面,检测SD卡;若检测到SD卡,向SD卡写入buf2里面的数据。程序下载进去后,验证是可以实现的。我的问题是是否可以定义buf1、buf2两个缓存区?ADC采样的数值存入buf1,buf1满数据存入buf2,同时buf1的数据写入SD卡;buf2满后数据存入buf1,buf2数据写入SD卡……依次交替
int main(void)
{
u32 total,free;
// int i,j;
u8 dir=1;
u16 adcx;
float temp;
FRESULT res;
FIL fsrc;
unsigned char buf2[26]="2013 08 28 16 28.279";
NVIC_Configuration();
delay_init();
uart_init(9600);
exfuns_init();
LCD_Init();
Adc_Init();
usmart_dev.init(72);
mem_init();
LCD_Display_Dir(dir);
POINT_COLOR=BLUE;
LCD_ShowString(10,10,200,16,16,"Molar Monitoring System");
LCD_ShowString(60,50,200,16,16,"Mini STM32");
LCD_ShowString(60,70,200,16,16,"FATFS TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"Use USMART for test");
LCD_ShowString(60,130,200,16,16,"2014/3/14");
while(SD_Initialize())
{
LCD_ShowString(60,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_Fill(60,150,240,150+16,WHITE);//Çå3yÏÔê¾
delay_ms(500);
}
f_mount(fs[0],"0:",1);
res=f_open(&fsrc,"0:/test1/test1.txt",FA_OPEN_ALWAYS|FA_WRITE);
if(res==FR_OK)
{
res=f_lseek(&fsrc,fsrc.fsize);
res=f_write(&fsrc,buf2, sizeof(buf2),&bw);
}
f_close(&fsrc);
while(exf_getfree("0",&total,&free))
{
LCD_ShowString(60,150,200,16,16,"Fatfs Error!");
delay_ms(500);
LCD_Fill(60,150,240,150+16,WHITE);
delay_ms(500);
}
POINT_COLOR=BLUE;
LCD_ShowString(60,150,200,16,16,"FATFS OK!");
LCD_ShowString(60,170,200,16,16,"SD Total Size: MB");
LCD_ShowString(60,190,200,16,16,"SD Free Size: MB");
LCD_ShowNum(172,170,total>>10,5,16);
LCD_ShowNum(172,190,free>>10,5,16);
delay_ms(5000);
LCD_Clear(WHITE);
POINT_COLOR=BLUE;
LCD_ShowString(20,200,200,16,16,"Molar Monitoring System");
LCD_ShowString(20,220,200,16,16,"ADC:");
LCD_ShowString(100,220,200,16,16,"Voltage: V");
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(60,200,adcx,4,16,0);
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(170,220,adcx,1,16,0);
LCD_ShowString(180,220,200,16,16,".");
temp-=adcx;
temp*=1000;
LCD_ShowxNum(190,220,temp,3,16,0X80);
delay_ms(250);
}
加载中...
查看其它19个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
主函数大概是这样的:初始化,显示初始的一个界面,检测SD卡;若检测到SD卡,向SD卡写入buf2里面的数据。程序下载进去后,验证是可以实现的。我的问题是是否可以定义buf1、buf2两个缓存区?ADC采样的数值存入buf1,buf1满数据存入buf2,同时buf1的数据写入SD卡;buf2满后数据存入buf1,buf2数据写入SD卡……依次交替
int main(void)
{
u32 total,free;
// int i,j;
u8 dir=1;
u16 adcx;
float temp;
FRESULT res;
FIL fsrc;
unsigned char buf2[26]="2013 08 28 16 28.279";
NVIC_Configuration();
delay_init();
uart_init(9600);
exfuns_init();
LCD_Init();
Adc_Init();
usmart_dev.init(72);
mem_init();
LCD_Display_Dir(dir);
POINT_COLOR=BLUE;
LCD_ShowString(10,10,200,16,16,"Molar Monitoring System");
LCD_ShowString(60,50,200,16,16,"Mini STM32");
LCD_ShowString(60,70,200,16,16,"FATFS TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"Use USMART for test");
LCD_ShowString(60,130,200,16,16,"2014/3/14");
while(SD_Initialize())
{
LCD_ShowString(60,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_Fill(60,150,240,150+16,WHITE);//Çå3yÏÔê¾
delay_ms(500);
}
f_mount(fs[0],"0:",1);
res=f_open(&fsrc,"0:/test1/test1.txt",FA_OPEN_ALWAYS|FA_WRITE);
if(res==FR_OK)
{
res=f_lseek(&fsrc,fsrc.fsize);
res=f_write(&fsrc,buf2, sizeof(buf2),&bw);
}
f_close(&fsrc);
while(exf_getfree("0",&total,&free))
{
LCD_ShowString(60,150,200,16,16,"Fatfs Error!");
delay_ms(500);
LCD_Fill(60,150,240,150+16,WHITE);
delay_ms(500);
}
POINT_COLOR=BLUE;
LCD_ShowString(60,150,200,16,16,"FATFS OK!");
LCD_ShowString(60,170,200,16,16,"SD Total Size: MB");
LCD_ShowString(60,190,200,16,16,"SD Free Size: MB");
LCD_ShowNum(172,170,total>>10,5,16);
LCD_ShowNum(172,190,free>>10,5,16);
delay_ms(5000);
LCD_Clear(WHITE);
POINT_COLOR=BLUE;
LCD_ShowString(20,200,200,16,16,"Molar Monitoring System");
LCD_ShowString(20,220,200,16,16,"ADC:");
LCD_ShowString(100,220,200,16,16,"Voltage: V");
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(60,200,adcx,4,16,0);
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(170,220,adcx,1,16,0);
LCD_ShowString(180,220,200,16,16,".");
temp-=adcx;
temp*=1000;
LCD_ShowxNum(190,220,temp,3,16,0X80);
delay_ms(250);
}
一周热门 更多>