stm32f4 U盘设计引起的HardFault

2019-07-21 02:07发布

最近小弟做了一个程序,用了uocs以及emwin。
程序中,设计了U盘的插入,识别,以及数据传输。
目前U盘这个地方出现了问题,我简化为了,插入U盘然后显示出U盘的容量,然后我抽出U盘再插入并且显示U盘,这个动作重复2次,第三次的时候便会产生硬件中断。硬件中断寄存器,如下图·····


如果朋友知道,这种硬件错误产生的原因,或者可能性·麻烦大家告诉一下。
我刚开始以为是UCOSII的问题,我单任务或者不加操作ucos运行,都出现了这个问题

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
lovebird_27
2019-07-21 14:45
回复【3楼】八度空间:
---------------------------------
我把内存的大小进行了修改,还是出现了这个问题。
我前几天解决了这个问题,但是自己感觉莫名其妙的。
我自己是使用了EMWIN以及UCOSII  
GUIConf.c文件中
硬件的同事叫我尽量使用内存,我就这样配置的
#define USE_EXRAM  0//1使用外部RAM   有1M
//设置EMWIN内存大小   
#define GUI_NUMBYTES  (70*1024)    //#define GUI_NUMBYTES  (500*1024)
#define GUI_BLOCKSIZE 0X80  //块大小
结果U盘的介入就导致了死机,现在我换为了使用外部SRAM就没有出问题了
#define USE_EXRAM  1//使用外部RAM   有1M
//设置EMWIN内存大小   
#define GUI_NUMBYTES  (60*1024)    //#define GUI_NUMBYTES  (500*1024)
#define GUI_BLOCKSIZE 0X80  //块大小


//GUI_X_Config
//初始化的时候调用,用来设置emwin所使用的内存
void GUI_X_Config(void) {
if(USE_EXRAM) //使用外部RAM
{
U32 *aMemory = mymalloc(SRAMEX,GUI_NUMBYTES); //从外部SRAM中分配GUI_NUMBYTES字节的内存
GUI_ALLOC_AssignMemory((void*)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
}else  //使用内部RAM
{
U32 *aMemory = mymalloc(SRAMIN,GUI_NUMBYTES); //从内部SRAM中分配GUI_NUMBYTES字节的内存
GUI_ALLOC_AssignMemory((U32 *)aMemory, GUI_NUMBYTES); //为存储管理系统分配一个存储块
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE); //设置存储快的平均尺寸,该区越大,可用的存储快数量越少
GUI_SetDefaultFont(GUI_FONT_6X8); //设置默认字体
}
}

一周热门 更多>