这个是我自己写的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 <stdio.h>
#include <string.h>
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;
}
}