void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1) {
for (int i = 0; i < 10; i++) {
HAL_GPIO_WritePin(GPIOA, (1 << i), GPIO_PIN_SET); // Turn ON LED
HAL_GPIO_WritePin(GPIOB, (1 << i), GPIO_PIN_RESET); // Set cathode LOW
HAL_Delay(200);
}
HAL_Delay(500);
for (int i = 0; i < 10; i++) {
HAL_GPIO_WritePin(GPIOA, (1 << i), GPIO_PIN_RESET); // Turn OFF LED
HAL_GPIO_WritePin(GPIOB, (1 << i), GPIO_PIN_SET); // Set cathode HIGH
HAL_Delay(200);
}
HAL_Delay(500);
}
}
// GPIO Initialization
static void MX_GPIO_Init(void) {
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Configure GPIOA (Anode Pins) as Output
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |
GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 |
GPIO_PIN_8 | GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Configure GPIOB (Cathode Pins) as Output
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 |
GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 |
GPIO_PIN_8 | GPIO_PIN_9;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}