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