CubeMX RTOS Demo
CubeMX创建工程
1.file ->> new project

2.选择对应的芯片,start project

3.配置需要的pin,配置时钟,并添加MiddleWare;这里添加的有gpio,uart,rcc,sys
其中的rcc是配置stm32的时钟,sys是配置jtag的,如果不配置,默认是关闭的

然后配置时钟为72MHz

4.配置工程,这里会配置工程目录的一些东西

5,点击 generate code,就可以创建工程了

增加串口打印(printf)
上面的工程里面我们已经添加了uart的硬件,现在需要重定向fputc函数到uart1上,在usart.c中添加下面的代码
/* USER CODE BEGIN 1 */
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
FILE __stdout;
//重定向fputc函数
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
/* USER CODE END 1 */
并在usart.h和freertos.c中添加头文件
/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */
然后在默认的task中,加入printf测试一下
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN StartDefaultTask */
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
printf("hello cubemx rtos\r\n");
osDelay(100);
}
/* USER CODE END StartDefaultTask */
}
就可以在串口助手上看到有对应的log输出了,并且板子上的led会每隔100ms闪烁一次

对应的代码在这里:cubeMX_RTOS_Demo
本文介绍了如何使用CubeMX创建一个包含RTOS的STM32工程,并详细步骤配置GPIO、UART、RCC和SYS。通过重定向fputc函数,实现了串口打印功能,使得在串口助手能观察到程序运行状态。同时,文中给出了LED闪烁与串口输出的示例代码。
2657

被折叠的 条评论
为什么被折叠?



