打印
[STM32F3]

STM32+UCOS使用LCD时陷入HARDFAULT

[复制链接]
2532|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)加了断点

沙发
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 | 只看该作者
学习啦!

使用特权

评论回复
5
quray1985| | 2015-9-23 21:09 | 只看该作者
进入了硬件错误了,你这个delay和delayHmSm那个函数一样吗

使用特权

评论回复
6
cowboy2014| | 2015-9-23 21:28 | 只看该作者
是不是定义的数组的大小超过了RAM的大小啊

使用特权

评论回复
7
yc_2503|  楼主 | 2015-9-23 22:04 | 只看该作者
quray1985 发表于 2015-9-23 21:09
进入了硬件错误了,你这个delay和delayHmSm那个函数一样吗

不一样直接用的for()来延时,但是,我是在系统初始化之前初始化的LCD啊,那个时候滴答定时器还没有打开。

使用特权

评论回复
8
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改小就没事

使用特权

评论回复
9
innocence713| | 2016-3-16 13:57 | 只看该作者
遇到同样的问题,请问你是怎么解决的啊?

使用特权

评论回复
10
Mrk| | 2016-3-18 10:54 | 只看该作者
楼主  我也在做这个 现在卡在了
for( i = 0; i < width*height; i++ )
        {
                        LCD_WR_Data( color );
                //Delay(0x0FFf);
        }
能加个qq问问你吗?

使用特权

评论回复
11
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

粉丝