1、SYS配置
2、RCC配置
3、时钟树配置
4、FREERTOS配置
5、定时器提供时钟
6、LED配置
7、工程建立
8、LED宏定义
在main.h下方插入如下代码:
/* USER CODE BEGIN Private defines */ #define LED1_ON HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET) #define LED1_OFF HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET) #define LED2_ON HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET) #define LED2_OFF HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET) #define LED3_ON HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_SET) #define LED3_OFF HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_RESET) /* USER CODE END Private defines */
9、代码书写
void StartDefaultTask(void const * argument) { /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ for(;;) { osDelay(1); } /* USER CODE END StartDefaultTask */ } /* USER CODE BEGIN Header_StartTaskLED1 */ /** * @brief Function implementing the myTaskLED1 thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartTaskLED1 */ void StartTaskLED1(void const * argument) { /* USER CODE BEGIN StartTaskLED1 */ /* Infinite loop */ for(;;) { LED1_ON; osDelay(500); LED1_OFF; osDelay(500); } /* USER CODE END StartTaskLED1 */ } /* USER CODE BEGIN Header_StartTaskLED2 */ /** * @brief Function implementing the myTaskLED2 thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartTaskLED2 */ void StartTaskLED2(void const * argument) { /* USER CODE BEGIN StartTaskLED2 */ /* Infinite loop */ for(;;) { LED2_ON; osDelay(500); LED2_OFF; osDelay(500); } /* USER CODE END StartTaskLED2 */ } /* USER CODE BEGIN Header_StartTaskLED3 */