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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)