测试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 */
}