讨论一下STM32单步好使,全速不好使一般是什么原因造成的?

chokee   2008-11-17 15:20 楼主
                                 跑一个STM32的程序,点全速运行不好使。单步确好使。有人遇到过类似的情况么?

回复评论 (14)

延时问题?

                                  
点赞  2008-11-17 15:32

说具体点

                                 这种问题可以有上百种答案。
点赞  2008-11-17 15:35

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

                                 无非是自己仔细调代码了
点赞  2008-11-17 16:07

具体是这样的

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); // 
}
点赞  2008-11-17 16:55

代码入上面所示

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

点赞  2008-11-17 16:59

时序问题

                                   时序问题,跟2楼说的道理差不多
点赞  2008-11-17 17:18

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

                                 你试试把断点逐渐向后移,重复上述实验,看看到哪里会出现问题,然后再分析。
点赞  2008-11-17 17:20

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

                                 而且,还要留出指令执行的时间
点赞  2008-11-17 17:40

时序问题能导致进FAULT么?

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

/* Configure the FSMC Parallel interface -------------------------------------*/
  LCD_FSMCConfig();
这两个函数都市COPY官方的。LCD压根没接,只是跑一下看能不能顺利的跑起来。结果连这个愿望也破空了,郁闷
点赞  2008-11-17 18:25

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

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

你的问题很难有人说得清,首先你自己都不能一次说清楚,别人就更难搞明白了。
点赞  2008-11-17 18:35

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

                                 我就是初始化一下看它能不能通过,除了那个初始化之外就再也没有操作LCD接口了
点赞  2008-11-18 09:36

5楼的程序算访问LCD吗?

LCD_WriteCmd(0x00,0xCD); // LCD Control Register(LCR)
LCD_WriteCmd(0x01,0xf1); // Misc.Register(MIR)
LCD_WriteCmd(0x02,0x10); // 
点赞  2008-11-18 14:27

这个对他有影响么?

                                 这个是能引起硬件中断么?好像根本到不了这里就已经FAULT了呀。那为什么停一下又好使了呢?
点赞  2008-11-18 17:05

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

                                 看看是哪条指令产生的硬件中断,再看看为什么。
点赞  2008-11-18 17:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复