System Workbench for STM32

You are viewing a reply to Delays not working  

Delays not working


In myDelay2, the error is obvious: you write your loop incorrectly: for (i=0;i>5000000;i++) {}
while it should be for (i=0;i != 5000000;i++) {} ; your loop is in fact never executed: i is initialized to 0 so it’s not greater than 5000000...

For myDelay1, I think the error is a bit more tricky: you probably never get out of myDelay as you don’t initialize the SysTick timer, so should not get any interrupt. Moreover, if you initialize the SysTick timer as usual, you will get interrupts every 10ms, meaning your delay count of 500000 means 5000 seconds: nearly 2 hours!

Note also that you do not initialize the LED outputs, so they are both in the same state (probably ON) at program start and as your delay is either too short or too long you don’t see them blinking...

To debug you can just set a breakpoint in your Delay functions or SysTick_Handler to check what happens.

Hope this helps,

Bernard (Ac6)