STM32单片机,用FAT文件系统向SD卡中存储DS18B20温度数据

这个是我自己写的main函数里的部分。实现的功能是:我将会向SD卡里输入从DS18B20的温度数据40次,然后会有亮灯,

这个是对应STM32404ZGT6芯片的。至于那些乱码的地方没事的,不是重要部分。



#include "system.h"

#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h" 
#include "malloc.h" 
#include "sdio_sdcard.h" 
#include "flash.h"
#include "ff.h" 
#include "fatfs_app.h"
#include "rtc.h"
#include "ds18b20.h"
#include
#include
char msg[64];
int main()
{
//RTC_TimeTypeDef RTC_TimeStruct;
int  i=0;

FIL fp;
UINT bw;



float *dataPtr =NULL;
FRESULT res;
  //unsigned int buf[10];
SysTick_Init(168);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //ÖжÏÓÅÏȼ¶·Ö×é ·Ö2×é
LED_Init();
USART1_Init(9600);
  EN25QXX_Init(); //³õʼ»¯EN25Q128  
my_mem_init(SRAMIN); //³õʼ»¯ÄÚ²¿ÄÚ´æ³Ø
 


FATFS_Init(); //ΪfatfsÏà¹Ø±äÁ¿ÉêÇëÄÚ´æ
  RTC_Config();
DS18B20_Init();
f_mount(fs[0],"0:",1); //¹ÒÔØSD¿¨
  dataPtr=(float*)mymalloc(SRAMIN,512); //ÉêÇ뻺³åÇø
//дÈë
for(i=0;i<40;i++)
{
// temper=DS18B20_GetTemperture();
//  c=(char)temper;
 
//   dataPtr[i]=c;
dataPtr[i] = DS18B20_GetTemperture();
delay_ms(10);
    printf("%f\n",dataPtr[i]);


}


res=f_open (&fp,"0:vnj.log", FA_CREATE_ALWAYS | FA_WRITE);//ÎļþÃû£¬µØÖ·£¬ÀàÐÍ
if(res==FR_OK)
{
printf("¡·´ò¿ª/´´½¨FatFs¶Áд²âÊÔÎļþ.txtÎļþ³É¹¦£¬ÏòÎļþдÈëÊý¾Ý¡£\r\n");
for(int m = 0; m < 40; m++)
{

UINT len = sprintf(msg, "%f'C\r\n", dataPtr[m]);
res=f_write (&fp,msg, len + 1, &bw);
}
if(res==FR_OK)
    {
      printf("¡·ÎļþдÈë³É¹¦£¬Ð´Èë×Ö½ÚÊý¾Ý£º%d\n",bw);
      printf("¡·ÏòÎļþдÈëµÄÊý¾ÝΪ£ºfsvbskv\r\n\r\n");
    }
    else
    {
      printf("£¡£¡ÎļþдÈëʧ°Ü£º(%d)\n",res);
    }    
/* ²»ÔÙ¶Áд£¬¹Ø±ÕÎļþ */
f_close (&fp);
}




myfree(SRAMIN,dataPtr) ;   //ÄÚ´æÊÍ·Å(Íⲿµ÷ÓÃ)
while(1)
{
delay_ms(100);
  
  led1=!led1;
}


}

你可能感兴趣的:(STM32,---------)