显示BMP程序中调用f_open函数进入HardFault_Handler

[复制链接]
683|0
 楼主| 喷水壶 发表于 2018-6-7 15:30 | 显示全部楼层 |阅读模式

问题描述:显示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卡中中文字库的函数定义的就是局部变量,没有问题的,那个大神帮忙指导下是什么原因。





您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

437

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部