[STM32F3] STM32+UCOS使用LCD时陷入HARDFAULT

[复制链接]
3244|10
 楼主| yc_2503 发表于 2015-9-23 09:23 | 显示全部楼层 |阅读模式
新人,刚接触UCOS不久
---------------------------------------------
昨晚想在野火给的那个多任务的例程中加进LCD
然后就把LCD的驱动加到工程中了
然后在板级初始化函数BSP_INIT中初始化LCD这时候还没有初始化系统
然后就出毛病了,直接掉到了hardfault里面了;

LCD初始化函数就是执行下面四个函数
        LCD_GPIO_Config();
        LCD_FSMC_Config();        
        LCD_Rst();
        LCD_REG_Config();

我一个一个的屏蔽,
然后发现只要把Lcd_Delay(0xAFFf<<2)里面的AFFF改小,改成0xff,就掉不到hardfault里面了;
void Lcd_Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
想问一下这个什么原因



我在hardfault_handler()的while(1)加了断点
QQ截图20150923084855.png
airwill 发表于 2015-9-23 12:55 | 显示全部楼层
最好能捕捉到导致 FAULT 的指令, 再给出 FAULT 寄存器的值来分析.
看看版主的总结帖.
https://bbs.21ic.com/icview-1071376-1-1.html
LIMBO123 发表于 2015-9-23 13:01 | 显示全部楼层
看看学习
fanxsd 发表于 2015-9-23 13:49 | 显示全部楼层
学习啦!
quray1985 发表于 2015-9-23 21:09 | 显示全部楼层
进入了硬件错误了,你这个delay和delayHmSm那个函数一样吗
cowboy2014 发表于 2015-9-23 21:28 | 显示全部楼层
是不是定义的数组的大小超过了RAM的大小啊
 楼主| yc_2503 发表于 2015-9-23 22:04 | 显示全部楼层
quray1985 发表于 2015-9-23 21:09
进入了硬件错误了,你这个delay和delayHmSm那个函数一样吗

不一样直接用的for()来延时,但是,我是在系统初始化之前初始化的LCD啊,那个时候滴答定时器还没有打开。
 楼主| yc_2503 发表于 2015-9-23 22:08 | 显示全部楼层
cowboy2014 发表于 2015-9-23 21:28
是不是定义的数组的大小超过了RAM的大小啊

没有定义数组;
执行下面这个函数
void Lcd_Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
Lcd_Delay(0xAFFf<<2);
就会掉进hardfault中
把AFFF改小就没事
innocence713 发表于 2016-3-16 13:57 | 显示全部楼层
遇到同样的问题,请问你是怎么解决的啊?
Mrk 发表于 2016-3-18 10:54 | 显示全部楼层
楼主  我也在做这个 现在卡在了
for( i = 0; i < width*height; i++ )
        {
                        LCD_WR_Data( color );
                //Delay(0x0FFf);
        }
能加个qq问问你吗?
Mrk 发表于 2016-3-18 10:55 | 显示全部楼层
innocence713 发表于 2016-3-16 13:57
遇到同样的问题,请问你是怎么解决的啊?

你解决了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:<img src="static/image/smiley/comcom/1.gif" class="vm"> ...

6

主题

35

帖子

0

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