potentieller Lösungsweg, kann ihn nicht ausprobieren
This commit is contained in:
+48
-1
@@ -39,6 +39,10 @@
|
||||
/* ------------------------------------ DEFINES --------------------------------------- */
|
||||
#define LOOPS_PER_MS 1244 // NOP-loops for delay()
|
||||
#define WAITTIME 500
|
||||
#define FIRST_LED 0
|
||||
#define LAST_LED 3
|
||||
#define UP 1
|
||||
#define DOWN -1
|
||||
|
||||
|
||||
/* ------------------------------------ TYPE DEFINITIONS ------------------------------ */
|
||||
@@ -50,6 +54,7 @@ int state = 0;
|
||||
/* ------------------------------------ PROTOTYPES ------------------------------------ */
|
||||
static void GPIO_init(void);
|
||||
static void delay(const uint16_t ms);
|
||||
static void blink(const unint numLED);
|
||||
|
||||
|
||||
/* ------------------------------------ M A I N --------------------------------------- */
|
||||
@@ -67,9 +72,31 @@ int main(void)
|
||||
|
||||
|
||||
/* --- infinite processing loop --- */
|
||||
|
||||
while (1)
|
||||
{
|
||||
/* ... add your code to implement the lab assignment ... */
|
||||
int direction;
|
||||
|
||||
while(1){
|
||||
if(i == FIRST_LED){
|
||||
direction = UP;
|
||||
}
|
||||
else if(i == LAST_LED){
|
||||
direction = DOWN;
|
||||
}
|
||||
|
||||
blink(i); //One full LED blink cylce
|
||||
|
||||
if(direction == UP){
|
||||
i++;
|
||||
}
|
||||
else if(direction == DOWN){
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
switch (state) {
|
||||
case 0:
|
||||
@@ -119,7 +146,7 @@ static void GPIO_init(void)
|
||||
{
|
||||
/* enable port clocks */
|
||||
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN; // LEDs: A
|
||||
|
||||
int i = FIRST_LED;
|
||||
|
||||
/* --- LEDs --- */
|
||||
GPIOA->ODR |= MASK_LED_ALL;
|
||||
@@ -154,5 +181,25 @@ static void delay(const uint16_t ms)
|
||||
}
|
||||
}
|
||||
|
||||
static void blink(const uint numLED)
|
||||
{
|
||||
switch (state) {
|
||||
case 0:
|
||||
GPIOA->ODR &= ~(1 << numLED); // LEDX on
|
||||
state++;
|
||||
break;
|
||||
case 1:
|
||||
delay(WAITTIME); // wait
|
||||
state++;
|
||||
break;
|
||||
case 2:
|
||||
GPIOA->ODR |= (1 << numLED); // LEDX off
|
||||
delay(WAITTIME); // wait
|
||||
state = default;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* ************************************ E O F ***************************************** */
|
||||
|
||||
Reference in New Issue
Block a user