Hello all
I am quite new to Keil STR9 Series. I was just learning the whole thing by going through and trying some small examples with it. I want to know how to control just one LED ( say 7.0) to blink at a time.
while (1) { for (n = 0x01; n <= 0xFF; n <<= 1) { GPIO7->DR[0x3FC] = n; } }
This piece of code turns on the all 8 LEDS at the same time. How can i blink just one LED (7.0) every 1 second?
Thanks
I looked for it . but couldnt get clear expalanation. There is an example code which do waiting
void wait (void) { /* Wait function */ int d; d = AD_last; /* Read AD_last value */ if (d != AD_last) /* Make sure that AD interrupt did */ d = AD_last; /* not interfere with value reading */ d *= 500; d += 50000; /* Scale analog value for delay */ /* lower value -> longer delay */ while (d--); /* Only to delay for LED flashes */ }
I tried to modify this, using like this in my case.
void wait (void) { /* Wait function */ int d= 1000; while (d--); /* Only to delay for LED flashes */ } while(1) { for (n = 0x01; n <= 0x1; n <<= 1) { GPIO7->DR[0x3FC] = n; wait();_ }
But nothing happens
So your first reference to wait(ms) was just a random chance? Not based on you having found such a function in any runtime library documentation for any runtime library you are using? Is that a good way to write code?
Your next attempt - did you test to search about delays on this forum? If you did, you would have found quite a number of discussions about the problems with using busy-loops in C without binding the delay time to some real hardware property.
Another thing - how long do you think your puny 1000-step delay takes? Do you really expect that your eye will be able to see any result of such a short delay?
Yet another thing - if you want to blink a LED, you need to repeatedly do: - Turn on the LED. - Wait for x milliseconds. - Turn off the LED. - Wait for 1000-x milliseconds.
Based on the documentation for your processor: - Do you see code both for turning on and for turning off any LED? - Does the processor documentation suggest that a 1000-step for loop would be a suitable delay?
Note that turn on/turn off can be handled by the same primitive, if you use a primitive that toggles the pin state.