測試STM32CubeMX+FreeRTOS,實現串口打印
在STM32CubeMX+FreeRTOS實現LED燈閃基礎上,實現串口打印
試驗工具:
1.STM32CubeMX 5.1.0
2.keil uVision4
3.STM32F405RGT6板子(只引出來串口1.2、3個LED、SWD仿真調試口)
4.JLINK下載工具
5.串口工具
配置步驟:
1.打開上個LED燈閃工程,找到STM32CubeMX類型文件,配置串口1
2.生成代碼,代碼生成需要時間,耐心等待
3.程序修改測試
4.串口打印程序如下,作為參考
打開上個LED燈閃工程,找到STM32CubeMX類型文件,直接在這里添加串口配置
1.配置串口,可以1和2都配置
2.生成代碼,打開工程
3.程序修改測試
打開程序freertos.c文件,在/* USER CODE BEGIN Includes */這里,添加串口打印頭文件
#include "stdio.h"
打開usart.c文件,在/* USER CODE BEGIN 1 */這里,添加串口1實現打印
int fputc(int ch, FILE *f)
{
/* 發送一個字節數據到USART1 */
HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xffff);
return ch;
}
在void StartLED3Task(void const * argument)的for(;;)里面添加printf("Start LED3 FLASH Task");
打印函數添加在HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin);前面.
依次在4和5里也添加上打印函數printf("Start LED4 FLASH Task");和printf("Start LED5 FLASH Task");
編譯,燒錄程序,通過串口助手觀察測試結果。
串口依次循環打印,每秒只打印一條數據。
Start LED3 FLASH Task
Start LED4 FLASH Task
Start LED5 FLASH Task
4.任務燈閃,串口打印程序如下,作為參考:
void StartLED4Task(void const * argument)
{
? /* USER CODE BEGIN StartLED4Task */
? /* Infinite loop */
? for(;;)
? {
printf("Start LED4 FLASH Task");
HAL_GPIO_TogglePin(LED4_GPIO_Port,LED4_Pin);
osDelay(1000);
? }
? /* USER CODE END StartLED4Task */
}