potentieller Lösungsweg, kann ihn nicht ausprobieren

This commit is contained in:
2026-03-09 12:14:02 +01:00
parent ed2f2736d0
commit fb89de5354
20 changed files with 2827 additions and 1436 deletions
+48 -1
View File
@@ -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 ***************************************** */