复制上次的LED程序,重命名为UsartTask
打开上次的cubemx工程文件,这样就可以直接往里面加新功能

选择串口一,模式选择异步
可以看到串口一的 PA9 PA10高亮,表示配置完成。
选择freeRTOS,将存储器分配选择为动态静态并存

选择task新建串口任务。

生成代码,可以看到除了led_task,还多了一个usart_task,
在使用printf语句之前,需要将printf重定向,在main.c加入代码
//printf重定向
int fputc(int ch, FILE *f)
{
while((USART1->SR & 0X40)==0);
USART1->DR = (uint8_t) ch;
return ch;
}
使用fputc函数,要在头文件加入stdio.h

点击选择mricro usb
在串口任务中,循环1s中发送数据
void Usart_Task(void const * argument)
{
/* USER CODE BEGIN Usart_Task */
/* Infinite loop */
for(;;)
{
printf("UsartTask is running!\r\n");
osDelay(1000);
}
/* USER CODE END Usart_Task */
}
实验结果正确发送数据

文章讲述了如何基于STM32的CubeMX工程复制LED程序并创建一个新的UsartTask。配置串口一为异步模式,启用FreeRTOS并选择动态静态内存分配。为了使用printf,需重定向输出到串口,通过fputc函数实现在Usart_Task中每秒发送一次UsartTaskisrunning!的数据。
8328

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



