如题,
主程序如下
SystemInit();
USART_Config();
printf("0123
");
printf("LOVE
");
ili9320_Initializtion();
printf("0");
ili9320_Clear(Black);
printf("1");
ili9320_DisplayStringLine(Line1, " 12 WhyFly Team ",Red,Green);
if(DeviceCode==0x9320)
{
ili9320_DisplayStringLine(Line2," DeviceCode 9320",Red,Green);
}
直接下载进去执行,每次复位,串口只能输出123 LOVE,过一会儿就死机了,想再下程序都不行,显示could not stop Cortex_M device,
必须复位,然后重新插ULINK才能再下。
注释掉ili9320_Initializtion后,串口正常输出123 LOVE O13;
注释掉所有串口有关的东西后,LCD正常显示字符;
用ULINK单步仿真的话,会在
void ili9320_Initializtion(void)
{
u16 i;
LCD_X_Init();
Delay(5); /* delay 50 ms */
Delay(5); /* delay 50 ms */ //start internal osc
》》 DeviceCode = LCD_ReadReg(0x0000);
Delay(5);
标记箭头的那一句读寄存器的地方卡死,进去中断中的
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
u32 i;
printf("Hard error");
for(i=0;i<100000;i++);
}
}
这里,串口一直输出Hard error了
如果用全速执行,串口就只显示123 LOVE了,也不显示Harderror了,执行没有任何结果,终止执行就出现could not stop Cortex_M device!错误。
麻烦各位大神和原子哥了,帮我分析下原因吧,我实在找不到原因,注释掉各自的功能代码,他们分别能够正常运行,一旦一起就不行了。
LCD用FSMC控制,只用到PORTD,E,F,G的AFIO, 串口程序我用的USART1,对应PA9,PA10,
难道在FSMC初始化程序中开启了AFIO时钟,会和串口互相冲突么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
但是FSMC初始化中,开起了AFIO时钟,后来我试着在usart初始化程序加了一句开启AFIO时钟,
全速运行后,不再出现could not stop Cortex_M device的错误了,串口一直输出Hard error。
有时候人脑子到那个地方就过不去了,从没有想过把usart初始化放在后面,下午出去了下,回来就想到试试,一试就好了,
我再去找找原因,
以后遇到问题实在解决不了就先放一边,或许过一会儿就想到方法了。
是因为USART_Init(USART1,&USART_InitStructure);这句话,
但是具体原因还是不清楚,先初始化USART再初始化LCD就会出错,到底是为什么呢?
如果不注释,下进去就会出现could not stop Cortex_M device的错误,
我能力有限,只是个菜鸟,实在不知道原因了,我撤吧,
有大神有兴趣研究出来给我个说法啊,没人愿意研究就先算了吧,反正以后初始化把LCD放在usart前面就好啦。
一周热门 更多>