QQT912/CW32F030/原项目程序/SW/12 CW32 BLDC haLL pid OK/USER/font.c

179 lines
4.1 KiB
C
Raw Normal View History

#include "font.h"
uint8_t everRead=0;//<2F><>¼Flash<73>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC> 0û<30>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>1<EFBFBD><31>ʼ<EFBFBD><CABC>
sFONT Font8x16 = {
10*1024, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flash<73><68>ʼ<EFBFBD><CABC>ַ*/
8, /* Width */
16, /* Height */
#if !FLASH_FONT //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5>ֿ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ
ASCII8x16_Table, /* <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ */
#endif
};
sFONT Font16x24 = {
12*1024, /*<2A><>ʼ<EFBFBD><CABC>ַ*/
16, /* Width */
24, /* Height */
#if !FLASH_FONT //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5>ֿ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ
ASCII16x24_Table, /* <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ */
#endif
};
sFONT Font24x32 = {
17*1024, /*<2A><>ʼ<EFBFBD><CABC>ַ*/
24, /* Width */
32, /* Height */
#if !FLASH_FONT //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5>ֿ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ
ASCII24x32_Table, /* <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ */
#endif
};
sFONT GB2312_H1616 = {
256*1024, /*<2A><>ʼ<EFBFBD><CABC>ַ*/
WIDTH_CH_CHAR, /* Width */
HEIGHT_CH_CHAR, /* Height */
/* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ڴ<EFBFBD>ռ<EFBFBD><D5BC>̫<EFBFBD><CCAB><EFBFBD><EFBFBD> */
};
//ѡ<><D1A1>ʹ<EFBFBD><CAB9>FLASH<53><48>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>SD<53><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ
#if GBKCODE_FLASH
// 0<><30>HZLIB<49><42>ģ(<28>ɰ棬<C9B0><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>), 1<><31>GB2312<31><32>ģ
#if 1
/**
* @brief <EFBFBD><EFBFBD>ȡFLASH<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param pBuffer:<EFBFBD>洢<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param c <EFBFBD><EFBFBD> Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval None.
*/
uint8_t GetGBKCode_from_EXFlash( uint8_t * pBuffer, uint16_t c)
{
#if FLASH_FONT //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5>ֿ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char High8bit,Low8bit;
unsigned int pos,datnum;
High8bit= c >> 8; /* ȡ<><C8A1>8λ<38><CEBB><EFBFBD><EFBFBD> */
Low8bit= c & 0x00FF; /* ȡ<><C8A1>8λ<38><CEBB><EFBFBD><EFBFBD> */
//Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
datnum=GB2312_H1616.Width*GB2312_H1616.Height/8;
/*GB2312 <20><>ʽ*/
pos = ( (High8bit-0xa1)*94 + Low8bit-0xa1 )*datnum;
//<2F><>ȡ<EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD><EFBFBD>
SPI_FLASH_BufferRead(pBuffer , GB2312_H1616.AddrStart + pos , datnum);
#else
FONT_Bebug("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>岻֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
#endif
return 0;
}
/**
* @brief <EFBFBD><EFBFBD>ȡFlash<EFBFBD>е<EFBFBD>Ӣ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
* @param pBuffer:<EFBFBD>洢<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param c <EFBFBD><EFBFBD> Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param Fonts<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval None.
*/
uint8_t GetConslonsCode_from_EXFlash( uint8_t * pBuffer, const char c , sFONT *Fonts)
{
unsigned char chr;
unsigned int pos,datnum;
chr = c - ' ';
//Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռdatnum<75><6D><EFBFBD>ֽ<EFBFBD>)
datnum = (Fonts->Width * Fonts->Height)/8;
/*<2A><>ģƫ<C4A3>Ƶ<EFBFBD>ַ*/
pos = chr*datnum;
#if FLASH_FONT
//<2F><>ȡ<EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD><EFBFBD>
SPI_FLASH_BufferRead(pBuffer , Fonts->AddrStart + pos , datnum);
#else
for(uint16_t i=0;i<datnum;i++)
{
*(pBuffer+i) = (Fonts->Font_Table[pos+i]);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
}
#endif
return 0;
}
#else //<2F>ɰ<EFBFBD><C9B0><EFBFBD>ģHZLIB <20><><EFBFBD>׵ĺ<D7B5><C4BA><EFBFBD>
/*HZLIB<49><42><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF>洢<EFBFBD><E6B4A2>FLASH<53><48><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ*/
#define HZLIB_START_ADDRESS 1*4096
//<2F>ɰ<EFBFBD>HZLIB<49>ֿ<EFBFBD>ʹ<EFBFBD>õĺ<C3B5><C4BA><EFBFBD><EFBFBD><EFBFBD>HZLIB<49><42>֧<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>Ѱַ<D1B0><D6B7>ʽ<EFBFBD><CABD>GB2312<31><32>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int GetGBKCode_from_EXFlash( uint8_t * pBuffer, uint16_t c)
{
unsigned char High8bit,Low8bit;
unsigned int pos;
static uint8_t everRead=0;
High8bit= c >> 8; /* ȡ<><C8A1>8λ<38><CEBB><EFBFBD><EFBFBD> */
Low8bit= c & 0x00FF; /* ȡ<><C8A1>8λ<38><CEBB><EFBFBD><EFBFBD> */
//<2F><><EFBFBD><EFBFBD>ģʹ<C4A3>õ<EFBFBD>Ѱַ<D1B0><D6B7>ʽ<EFBFBD><CABD>GB2312<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pos = ((High8bit-0xa0-16)*94+Low8bit-0xa1)*WIDTH_CH_CHAR*HEIGHT_CH_CHAR/8;
//<2F><>ַָ<D6B7><D6B8>HZLIB<49><42>ģ<EFBFBD>ĵ<EFBFBD>ַHZLIB_START_ADDRESS
SPI_FLASH_BufferRead(pBuffer,HZLIB_START_ADDRESS+pos,WIDTH_CH_CHAR*HEIGHT_CH_CHAR/8);
//printf ( "%02x %02x %02x %02x\n", pBuffer[0],pBuffer[1],pBuffer[2],pBuffer[3]);
return 0;
}
#endif
#else //SD<53><44><EFBFBD><EFBFBD>ģ
static FIL fnew; /* file objects */
static FATFS fs; /* Work area (file system object) for logical drives */
static FRESULT res_sd;
static UINT br; /* File R/W count */
/**
* @brief <EFBFBD><EFBFBD>ȡSD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param pBuffer:<EFBFBD>洢<EFBFBD>ֿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param c <EFBFBD><EFBFBD> Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval None.
*/
int GetGBKCode_from_sd ( uint8_t * pBuffer, uint16_t c)
{
unsigned char High8bit,Low8bit;
unsigned int pos;
static uint8_t everRead = 0;
High8bit= c >> 8; /* ȡ<><C8A1>8λ<38><CEBB><EFBFBD><EFBFBD> */
Low8bit= c & 0x00FF; /* ȡ<><C8A1>8λ<38><CEBB><EFBFBD><EFBFBD> */
pos = ((High8bit-0xa1)*94+Low8bit-0xa1)*WIDTH_CH_CHAR*HEIGHT_CH_CHAR/8;
/*<2A><>һ<EFBFBD><D2BB>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>sd*/
if(everRead == 0)
{
res_sd = f_mount(&fs,"0:",1);
everRead = 1;
}
res_sd = f_open(&fnew , GBKCODE_FILE_NAME, FA_OPEN_EXISTING | FA_READ);
if ( res_sd == FR_OK )
{
f_lseek (&fnew, pos); //ָ<><D6B8>ƫ<EFBFBD><C6AB>
f_read( &fnew, pBuffer, WIDTH_CH_CHAR*HEIGHT_CH_CHAR/8, &br );//16*16<31><36>С<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD> <20><><EFBFBD><EFBFBD>ģ ռ<><D5BC>16*16/8<><38><EFBFBD>ֽ<EFBFBD>
f_close(&fnew);
return 0;
}
else
return -1;
}
#endif