STM32H750XB_RT-THREAD/26-27-LTDC—液晶显示/刷外部FLASH程序(如何恢复字库)/User/res_mgr/res_drv.c

135 lines
2.5 KiB
C
Raw Normal View History

2025-07-21 06:34:29 +00:00
/**
******************************************************************************
* @file bsp_led.c
* @author fire
* @version V1.0
* @date 2015-xx-xx
* @brief ledӦ<EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
******************************************************************************
* @attention
*
* ʵ<EFBFBD><EFBFBD>ƽ̨:Ұ<EFBFBD><EFBFBD> STM32 F429 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>̳ :http://www.firebbs.cn
* <EFBFBD>Ա<EFBFBD> :https://fire-stm32.taobao.com
*
******************************************************************************
*/
#include <string.h>
#include <stdlib.h>
#include "./fatfs/drivers/fatfs_flash_spi.h"
#include "./res_mgr/res_drv.h"
#include "RES_MGR.h"
/*=========================================================================================*/
#define RES_BASE 0x00200000
int GetResOffset(u32 res_base,const char *res_name);
/*=========================================================================================*/
int RES_GetOffset(const char *res_name)
{
int offset;
offset=GetResOffset(RES_BASE,res_name);
if(offset>0)
{
return RES_BASE+offset;
}
return -1;
}
/*=========================================================================================*/
//static GUI_MUTEX *mutex_lock=NULL;
void RES_DevInit(void)
{
// mutex_lock=GUI_MutexCreate();
TM_FATFS_FLASH_SPI_disk_initialize();
RES_DevTest();
}
uint32_t RES_DevGetID(void)
{
uint32_t id;
// GUI_MutexLock(mutex_lock,5000);
id =SPI_FLASH_ReadID();
// GUI_MutexUnlock(mutex_lock);
return id;
}
int8_t RES_DevWrite(u8 *buf,u32 addr,u32 size)
{
// GUI_MutexLock(mutex_lock,5000);
SPI_FLASH_SectorErase(addr&0xFFFFF000);
SPI_FLASH_BufferWrite(buf,addr,size);
// GUI_MutexUnlock(mutex_lock);
return 1;
}
int8_t RES_DevRead(u8 *buf,u32 addr,u32 size)
{
// GUI_MutexLock(mutex_lock,5000);
SPI_FLASH_BufferRead(buf,addr,size);
// GUI_MutexUnlock(mutex_lock);
return 1;
}
int RES_DevEraseSector(u32 addr)
{
// GUI_MutexLock(mutex_lock,5000);
SPI_FLASH_SectorErase(addr&0xFFFFF000);
// GUI_MutexUnlock(mutex_lock);
return 4096;
}
/*=========================================================================================*/
void RES_DevTest(void)
{
int i;
char *buf;
volatile u32 id;
buf =malloc(4096);
i=0;
RES_DevInit();
id =RES_DevGetID();
printf("0x%x",id);
// while(1)
{
#if 0
RES_DevEraseSector(i);
memset(buf,i>>12,4096);
RES_DevWrite(buf,i,4096);
#endif
memset(buf,0,4096);
RES_DevRead((u8 *)buf,i,4096);
i += 4096;
// GUI_msleep(100);
}
free(buf);
}
/*********************************************END OF FILE**********************/