#include "stm32f4xx.h" #define LED1_PIN GPIO_PIN_10 #define LED2_PIN GPIO_PIN_11 #define LED3_PIN GPIO_PIN_12 #define LED4_PIN GPIO_PIN_13 #define LED_COMMON 1 // Anode: 1, catode: 0 __attribute__((optimize("O0"))) void delay(volatile int cnt) { while(cnt--); } int main(void) { HAL_Init(); __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = { 0 }; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Pin = LED1_PIN; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = LED2_PIN; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = LED3_PIN; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = LED4_PIN; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); #if LED_COMMON HAL_GPIO_WritePin(GPIOC, LED1_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, LED2_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, LED3_PIN, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOC, LED4_PIN, GPIO_PIN_SET); #elif HAL_GPIO_WritePin(GPIOC, LED1_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, LED2_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, LED3_PIN, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, LED4_PIN, GPIO_PIN_RESET); #endif while (1) { HAL_GPIO_TogglePin(GPIOC, LED4_PIN); HAL_GPIO_TogglePin(GPIOC, LED1_PIN); delay(500000); HAL_GPIO_TogglePin(GPIOC, LED1_PIN); HAL_GPIO_TogglePin(GPIOC, LED2_PIN); delay(500000); HAL_GPIO_TogglePin(GPIOC, LED2_PIN); HAL_GPIO_TogglePin(GPIOC, LED3_PIN); delay(500000); HAL_GPIO_TogglePin(GPIOC, LED3_PIN); HAL_GPIO_TogglePin(GPIOC, LED4_PIN); delay(500000); } }