打印

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

[复制链接]
518|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

粉丝