📄 comm.h
字号:
//共用头文件
#ifndef __COMM_H__
#define __COMM_H__
#include <stm32f10x_lib.h>
#include <math.h>
#include <stdlib.h> //abs函数
#include <stdio.h>
#include <string.h>
////////////////////////////////////////////////////
//TFTLCD里面颜色的定义
#define RED 0XF800
#define GREEN 0X07E0
#define BLUE 0X001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define WHITE 0XFFFF //白色
#define BLACK 0X0000 //黑色
#define BROWN 0XBC40 //棕色
#define BRRED 0XFC07 //棕红色
#define GRAY 0X8430 //灰色
#define LGRAY 0XC618 //浅灰色
//频谱分段颜色
#define BOTC 0X07FF
#define MIDC 0X07FC
#define TOPC 0X069C
//MP3界面背景色
#define MP3COLOR1 BLACK
#define MP3COLOR2 0X6802
#define MP3COLOR3 0X8AA0
#define MP3COLOR4 0X500E
#define MP3COLOR5 0X380E
#define MP3COLOR6 0X000B
#define MP3COLOR7 BLACK
#define LRCCOLOR GBLUE//歌词的颜色
//功能选择背景色
#define Bro_TOP 0X038A
#define Bro_MID 0XEFC0
#define Bro_BTM 0X81BF
//////////////////////////////////////////////////////
//通用宏定义声明
typedef char CHAR;
typedef short SHORT;
typedef long LONG;
typedef unsigned long DWORD;
typedef int BOOL;
typedef u8 BYTE;
typedef unsigned short WORD;
#define FALSE 0
#define TRUE 1
//////////////////////////////////////////////////////
#define MAX_LONG_NAME_SIZE 80 /* 26*n+2 n=3 */
//返回值:对应的类型 bit0,mp3;bit1,wma;bit2,wav,bit3,mid;bit4,lrc;
// bit5,txt;bit6,jpg;bit7,jpeg;bit8,bmp;bit9,file;bit10,fon;
//文件信息结构体
#define T_MP3 1<<0
#define T_WMA 1<<1
#define T_WAV 1<<2
#define T_MID 1<<3
#define T_LRC 1<<4
#define T_TXT 1<<5
#define T_C 1<<6
#define T_H 1<<7
#define T_JPG 1<<8
#define T_JPEG 1<<9
#define T_BMP 1<<10
#define T_FILE 1<<11
#define T_FON 1<<12
//文件信息结构体
//包括文件名,文件类型,文件属性,起始簇和偏移量
typedef struct
{
BYTE F_ShortName[8];//保存八个字节的短文件名
BYTE F_Name[MAX_LONG_NAME_SIZE];
unsigned long F_StartCluster; //< file starting cluster for last file accessed
unsigned long F_Size; //< file size for last file accessed
u8 F_Attr; //< file attr for last file accessed
u16 F_Type;
//unsigned short CreateTime; //< file creation time for last file accessed
//unsigned short CreateDate; //< file creation date for last file accessed
unsigned long F_CurClust; //当前簇号
unsigned int F_Offset; //在簇号里面的扇区偏移
}FileInfoStruct;
//////////////////////////////////////////////////////
//笔杆结构体
typedef struct
{
u16 X0;//原始坐标
u16 Y0;
u16 X; //最终/暂存坐标
u16 Y;
u8 Key_Sta;//笔的状态
u8 Key_LSta;//上一次笔的状态
//触摸屏校准参数
float xfac;
float yfac;
short xoff;
short yoff;
}Pen_Holder;
extern Pen_Holder Pen_Point;
//////////////////////////////////////////////////////
//时间结构体
typedef struct
{
u8 hour;
u8 min;
u8 sec;
//公历日月年周
u16 w_year;
u8 w_month;
u8 w_date;
u8 week;
}tm;
extern tm timer;
//按键状态
#define Key_Down 0x01
#define Key_Up 0x00
//触摸屏按键处理
#define CLICK_POINT 0X01
#define MOVE_LEFT 0X10
#define MOVE_RIGHT 0X20
#define MOVE_UP 0X40
#define MOVE_DOWN 0X80
#define KEY_NEXT 0X01
#define KEY_PREV 0X02
#define KEY_FUNC 0X03
//外部笔
#define PEN GPIOA->IDR&(1<<0) //PA0
#define NPEN !(0x01&PEN) //!PEN
/////////////////////////////////////////////////////////////////
void delay_us(u32 Nus);//微秒延时
void delay_ms(u16 nms);//ms延时
/////////////////////////////////////////////////////////////////
//TFTLCD部分外要调用的函数
extern u16 Screen_Data[756];//42*18大小的GRAM数据
unsigned int TFT_RD_GRAM(u8 x,u16 y);//从指定地址读出GRAM数据
extern u16 POINT_COLOR;//默认红色
extern u16 BACK_COLOR; //背景颜色.默认为白色
void READ_GRAM(u8 x,u16 y); //从指定地址开始读取42*18大小的的GRAM数据
void RECOVER_GRAM(u8 x,u16 y);//从指定地址开始写入42*18大小的的GRAM数据
void TFT_Init(void); //初始化TFTLCD
void TFT_CLEAR(u16 color);//TFT清屏函数
void TFT_Fill(u8 xsta,u16 ysta,u8 xend,u16 yend,u16 color);//在指定区域填充指定颜色
void TFT_DrawPoint(u8 x,u16 y);//画一个点
void TFT_ShowChar(u8 x,u16 y,u8 num,u8 size,u8 mode);//在指定位置显示一个字符
void TFT_WR_Data16(u16 val);//写入一个16bit数据
void TFT_WR_REG(u8 data); //写TFT寄存器
void TFT_WR_CMD(u8 dbw,u8 index,u16 val);//向寄存器写入数据
void drow_touch_point(u8 x,u16 y);//画一个校准点
void TFT_ShowString(u8 x,u16 y,const u8 *p);//显示一个字符串(仅E文)
void TFT_ShowNum(u8 x,u16 y,u16 num,u8 len,u8 size,u8 mode); //显示一个数字. 0~65536
void TFT_ShowBigChar(u8 x,u16 y,u8 num);//在指定位置显示一个大字符!(仅限0~9&:)
void TFT_ShowBigNum(u8 x,u16 y,u8 num); //显示一个大的数字(0~99)
void TFT_ShowButton(u8 x,u16 y,u8 num); //在指定位置显示一个指定编号的按钮(SIZE:24*24)
void TFT_DrawLine(u8 x1, u16 y1, u8 x2, u16 y2);//画线
void TFT_DrawRectangle(u8 x1, u16 y1, u8 x2, u16 y2);//画一个矩形框
void TFT_ProBar(u8 lenth);//显示进度条
void Pro_Bar_Init(u8 x,u16 y,u8 len);
void Pro_Bar(u16 min,u16 max,u16 pos);
/////////////////////////////////////////////////////////////////
//FAT部分,外部要调用的函数
extern u32 file_ico[4]; //文件图标缓存区 folder.jpg;mus.jpg;pic.jpg;book.jpg;
extern u32 sys_ico[9]; //系统图标缓存区!不能篡改!
extern FileInfoStruct F_Info[8];//文件结构体
extern DWORD FirstDirClust; //根目录簇号
extern BYTE FAT32_Enable; //FAT32标记
extern WORD BytesPerSector; //每扇区字节数
extern WORD SectorsPerClust; //每簇扇区数
extern DWORD Fat_Dir_Cluster; //父目录簇号
//在gui.c内的全局变量
extern DWORD Cur_Dir_Cluster;//当前目录簇号
extern DWORD Fat_Dir_Cluster;
unsigned char FAT_Init(void);//Initialize of FAT need initialize SD first
unsigned long FAT_OpenDir(BYTE * dir);//打开目录
void F_Open(FileInfoStruct *FileInfo);//打开文件
u8 F_Read(FileInfoStruct *FileInfo,u8 *buf);//从文件读取512个字节
unsigned char F_PrevRead(FileInfoStruct *FileInfo,u8 *buf);//从文件读取前512个字节
unsigned long FAT_PrevCluster(unsigned long cluster,unsigned long startcluster);//向前读取一个簇号
unsigned long FAT_NextCluster(unsigned long cluster);//查找下一簇号
u8 Get_File_Info(u32 dir_clust,FileInfoStruct *FileInfo,u16 type,u16 *count);//查找/得到文件信息
u32 fatClustToSect(u32 cluster);//将簇号转换为扇区号
u8 SysInfoGet(u8 sel);//搜索系统文件
//////////////////////////////////////////////////////////////////
//SD卡部分,外部要调用的函数
extern u8 SD_Type;//SD卡的类型
u8 SD_Init(void);//SD卡初始化函数
u32 SD_GetCapacity(void); //取SD卡容量
u8 SD_ReadSingleBlock(u32 sector, u8 *buffer); //读一个sector
u8 SD_Read_Bytes(unsigned long address,u8 *buf,unsigned int offset,unsigned int bytes);//读取一byte
//////////////////////////////////////////////////////////////////
//TXT阅读部分外部要用到的函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -