[应用相关] 讨论一下STM32单步好使,全速不好使一般是什么原因造成的?

[复制链接]
6542|15
 楼主| tsx1983 发表于 2008-11-17 15:20 | 显示全部楼层 |阅读模式
跑一个STM32的程序,点全速运行不好使。单步确好使。有人遇到过类似的情况么?
simon21ic 发表于 2008-11-17 15:32 | 显示全部楼层

延时问题?

香水城 发表于 2008-11-17 15:35 | 显示全部楼层

说具体点

这种问题可以有上百种答案。
vigia 发表于 2008-11-17 16:07 | 显示全部楼层

我还碰到过High Speed优化不好使,Medium Speed优化好使的

无非是自己仔细调代码了
 楼主| tsx1983 发表于 2008-11-17 16:55 | 显示全部楼层

具体是这样的

void LCD_Initialize(void)
{

/* Configure the LCD Control pins --------------------------------------------*/
  LCD_CtrlLinesConfig();

/* Configure the FSMC Parallel interface -------------------------------------*/
  LCD_FSMCConfig();

LCD_WriteCmd(0x00,0xCD); // LCD Control Register(LCR)
LCD_WriteCmd(0x01,0xf1); // Misc.Register(MIR)
LCD_WriteCmd(0x02,0x10); // 
}
 楼主| tsx1983 发表于 2008-11-17 16:59 | 显示全部楼层

代码入上面所示

我编译下载之后点击运行,程序不动了,停止发现进FAULT了。
然后我在 LCD_FSMCConfig();
前面设个断点,运行到LCD_FSMCConfig();到这个地方就停了,然后我再点运行。居然好使了。
然后我再复位来一次,等到上面断点的时候我快速的点运行,他也不好使,一定要我在那个地方停一下它才不会进FAULT。

ijk 发表于 2008-11-17 17:18 | 显示全部楼层

时序问题

  时序问题,跟2楼说的道理差不多
香水城 发表于 2008-11-17 17:20 | 显示全部楼层

估计是你的FSMC时序没有配好

你试试把断点逐渐向后移,重复上述实验,看看到哪里会出现问题,然后再分析。
xwj 发表于 2008-11-17 17:40 | 显示全部楼层

LCD的反应很慢的哦,很可能是时序过快了

而且,还要留出指令执行的时间
 楼主| tsx1983 发表于 2008-11-17 18:25 | 显示全部楼层

时序问题能导致进FAULT么?

时序不对能导致进FAULT么?顶多就是LCD不显示贝。要是进FAULT就有点说不过去了。而且
/* Configure the LCD Control pins --------------------------------------------*/
  LCD_CtrlLinesConfig();

/* Configure the FSMC Parallel interface -------------------------------------*/
  LCD_FSMCConfig();
这两个函数都市COPY官方的。LCD压根没接,只是跑一下看能不能顺利的跑起来。结果连这个愿望也破空了,郁闷
香水城 发表于 2008-11-17 18:35 | 显示全部楼层

不接LCD表示对应的存储器空间不能访问

而HW FAULT的一个主要原因就是访问了不存在的存储器。

你的问题很难有人说得清,首先你自己都不能一次说清楚,别人就更难搞明白了。
 楼主| tsx1983 发表于 2008-11-18 09:36 | 显示全部楼层

问题是应用程序里我根本没访问LCD呀

我就是初始化一下看它能不能通过,除了那个初始化之外就再也没有操作LCD接口了
香水城 发表于 2008-11-18 14:27 | 显示全部楼层

5楼的程序算访问LCD吗?

LCD_WriteCmd(0x00,0xCD); // LCD Control Register(LCR)
LCD_WriteCmd(0x01,0xf1); // Misc.Register(MIR)
LCD_WriteCmd(0x02,0x10); // 
 楼主| tsx1983 发表于 2008-11-18 17:05 | 显示全部楼层

这个对他有影响么?

这个是能引起硬件中断么?好像根本到不了这里就已经FAULT了呀。那为什么停一下又好使了呢?
vigia 发表于 2008-11-18 17:37 | 显示全部楼层

产生硬件中断时去看看堆栈

看看是哪条指令产生的硬件中断,再看看为什么。
zxm19820916 发表于 2014-3-11 15:06 | 显示全部楼层
我碰到过查看堆栈里啥也没有,不知道是哪里进入的Hard Fault中断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

160

帖子

0

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