【求助帖】单步调试OK,全速运行时卡在startup_stm32f4xx.s里面出不来

2019-07-21 05:21发布

刚刚学STM32F4例程,出了点问题。
描述:
    烧下程序后,流水灯不能正常跑。

调试线索:
    用Jlink在线调试,单步没问题。但是一全速就卡死在startup_stm32f4xx.s里面

SysTick_Handler PROC                 EXPORT  SysTick_Handler            [WEAK]                 B       .                                                               //跳不出来                 ENDP

我发现,如果delay循环设得太多,也会卡死。设少了,就应该卡在while(1)上。
很不理解~~应该没地方发生堆栈溢出之类的狗血事吧

int main(void) {     RCC_ClocksTypeDef RCC_Clocks;        /* Initialize LEDs to be managed by GPIO */     STM_EVAL_LEDInit(LED4);     STM_EVAL_LEDInit(LED3);     STM_EVAL_LEDInit(LED5);     STM_EVAL_LEDInit(LED6);          /* SysTick end of count event each 10ms */     RCC_GetClocksFreq(&RCC_Clocks);     SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);            /* Turn OFF all LEDs */     STM_EVAL_LEDOff(LED4);     STM_EVAL_LEDOff(LED3);     STM_EVAL_LEDOff(LED5);     STM_EVAL_LEDOff(LED6);          while (1)     {       /* Toggle LED3 */       STM_EVAL_LEDToggle(LED4);       Delay(20);       /* Toggle LED3 */       STM_EVAL_LEDToggle(LED3);       Delay(20);       /* Toggle LED4 */       STM_EVAL_LEDToggle(LED5);       Delay(20);       /* Toggle LED4 */       STM_EVAL_LEDToggle(LED6);       Delay(20); } }

void Delay(uint16_t n) {   uint16_t m;   for(; n>0; n--){     m = 0xFF;     while(m>0)       m--;   } }
请各位大虾帮帮忙看看~感觉这应该是很2很小白的问题,但也需要求助了~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 07:37
没有systick中断服务函数吧?
前世无锋
2楼-- · 2019-07-21 10:21
程序里面也没有用到systick中断啊。为什么必须要sysytick?
正点原子
3楼-- · 2019-07-21 15:24
回复【3楼】前世无锋:
---------------------------------
因为你死机的现象,看上去就是没有systick中断造成的。
可能在.s文件里面调用的某些函数开启了吧。

一周热门 更多>