问题描述:显示BMP图片程序有错误,显示中文没问题
环境:iso—mini ,sdio驱动,fatfs文件系统
我的函数之前是
void Lcd_show_bmp(unsigned short int x, unsigned short int y,unsigned char *pic_name)
{
BYTE pColorData[960];
FATFS bmpfs;
FIL bmpfsrc;
FRESULT bmpres;
UINT read_num;
。。。。。
f_read(&bmpfsrc,&bitHead,sizeof(tagBITMAPFILEHEADER),&read_num);
f_read(&bmpfsrc,&bitInfoHead,sizeof(BITMAPINFOHEADER),&read_num);
//f_read(&bmpfsrc,pColorData,1,&read_num);
}
函数执行没有问题,读取的bmp信息正确。
把最后一行注释去掉后,程序会在 f-open 的 chk_mounted 函数调用后进入HardFault_Handler中断函数
解决办法:
把BYTE pColorData[960];
FATFS bmpfs;
FIL bmpfsrc;
FRESULT bmpres;
UINT read_num;
定义成该.c文件下的全局变量,没有问题了。没怎么研究过fatfs,不知道这几个变量定义成全局和局部有什么区别。pColorData变量时存读取到的数据的,也必须是全局的才可以,搞不明白怎么回事
我掉用sd卡中中文字库的函数定义的就是局部变量,没有问题的,那个大神帮忙指导下是什么原因。
|
|