stm32f4 怎么看fatfs文件系统申请了多少内存空间

stm32f4 怎么看fatfs文件系统申请了多少内存空间,第1张

STM32F429减小FATFS文件系统占用RAM大小,STM32F429的FATFS文件系统实验例程,代码量达到32M。

FLASH=(Code + RO-data + RW-data)/1024=491.9KB

RAM=(RW-data + ZI-data)/1024/1024=32M

单独编译一下STM32F103的FATFS文件系统实验例程,代码量达到了1M,刚好也把空间给占完了。是代码的问题,给文件系统分配了全部的空间大小,所以只要减少内存分配,就可以了。

*** 作步骤如下:

打开malloc.h文件,将内存分配的数值改小一些,这个时候再编译,代码量小到了3M。

FLASH=(Code + RO-data + RW-data)/1024=245.8KB

RAM=(RW-data + ZI-data)/1024/1024=3.1M

文件:mian.c

//功能:串口初始化、打开定时器中断,然后一直接收数据状态就好了。发送在中断中实现

#include "stm32f10x.h"

#include "usart.h"

u8 USART_rx_data

int main(void)

{

RCC_Configuration() //系统时钟配置

GPIO_Configuration() //端口初始化

NVIC_Configuration() //中断源配置

USART_Configuration()//串口1初始化

Time_Init() //定时器初始化

#ifdef DEBUG

debug()

#endif

TIM_Cmd(TIM3,ENABLE)

while(1)

{

}

}

给stm32移植fatfs文件系统,今天终于取得阶段性胜利。只需要提供这样几个函数即可

DSTATUS disk_initialize (BYTE)

DSTATUS disk_status (BYTE)

DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE)

DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE)// 如果实现只读的文件系统就不需要了。

DRESULT disk_ioctl (BYTE, BYTE, void*)

移植成功后,可以用如下方式读取SD卡了,实在太方便了,和PC机上编程差不了多少。

unsigned int i

BYTE buffer[512] // file copy buffer

FATFS fs // Work area (file system object) for logical drive

FIL fsrc // file objects

FRESULT res// FatFs function common result code

UINT br// File R/W count

USART1_Puts("Now, I'll read file 'i2c/uart.lst'.\n")

// Register a work area for logical drive 0

f_mount(0, &fs)

// Open source file

res = f_open(&fsrc, "i2c/uart.lst", FA_OPEN_EXISTING | FA_READ)

if (res)

{

USART1_Puts("Can't open i2c/uart.lst for read. :-(\n")

goto exit

}

for () {

res = f_read(&fsrc, buffer, sizeof(buffer), &br)

if (res || br == 0) break // error or eof

for( i = 0i <br++i )

USART1_Putc(buffer[i])

}

f_close(&fsrc)

exit:

// Unregister a work area before discard it

f_mount(0, NULL)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6039635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存