STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程

搭建环境说明:STM32Cubemx+STM32F407ZGT6(正点原子探索者V2,只要你的外部高速晶振和低速晶振一样就直接按我的步骤来,不一样也没事)

配置内容:

  • 时钟树
  • USART(printf)
  • FreeRTOS

如果本篇文章对你有帮助,记得点个赞哈!^^

文章目录

  • 一、STM32Cube配置工作
    • 1.1 选芯片
    • 1.2 配置外部晶振
    • 1.3 配置Debug方式和时基源
    • 1.4 配置串口
    • 1.5 开启中间层(FreeRTOS)
    • 1.6 尝试创建一个任务
    • 1.7 配置时钟树
    • 1.8 代码生成配置
    • 1.9 点击GENERATE CODE
  • 二、Keil5配置
    • 2.1 开启Reset and Run,关闭Debug Description
    • 2.2 重定向printf()
      • 2.2.1 修改usart.c文件
      • 2.2.3 使用演示

一、STM32Cube配置工作

1.1 选芯片

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第1张图片

1.2 配置外部晶振

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第2张图片

1.3 配置Debug方式和时基源

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第3张图片

1.4 配置串口

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第4张图片

1.5 开启中间层(FreeRTOS)

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第5张图片

1.6 尝试创建一个任务

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第6张图片

1.7 配置时钟树

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第7张图片

1.8 代码生成配置

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第8张图片
STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第9张图片

1.9 点击GENERATE CODE

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第10张图片

STM32Cube配置好了,接下来就开始在Keil中配置工程。

二、Keil5配置

2.1 开启Reset and Run,关闭Debug Description

做这一步的目的是要让我们每次烧写完程序后都自动运行,不然每次都要按复位代码才能运行。
不能直接点X退出,要点击OK退出,否则无法保存配置!!!!!!!!!

STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第11张图片
STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第12张图片

2.2 重定向printf()

我专门写了一篇有关printf()的博客,根据需要查看:STM32 HAL库:使用C标准库或MicroLIB实现printf && 多串口使用printf输出 && 结合DMA实现printf && 常见问题总结

2.2.1 修改usart.c文件

注意放在用户代码段,不然Cube会删除掉不再用户代码段的代码!!!!!

#include 
/* 告知连接器不从C库链接使用半主机的函数 */
#pragma import(__use_no_semihosting)

/* 定义 _sys_exit() 以避免使用半主机模式 */
void _sys_exit(int x)
{
    x = x;
}

/* 标准库需要的支持类型 */
struct __FILE
{
    int handle;
};

FILE __stdout;

/*  */
int fputc(int ch, FILE *stream)
{
    /* 堵塞判断串口是否发送完成 */
	/* 不同芯片的串口标志位不一定相同! */
    while((USART1->SR & 0X40) == 0);

    /* 串口发送完成,将该字符发送 */
    USART1->DR = (uint8_t) ch;

    return ch;
}

2.2.3 使用演示

在需要使用printf的c文件#include

经测试,可以正常输出汉字、英文、整数、浮点数、字符、字符串
STM32Cubemx:基于STM32F407ZGT6搭建FreeRTOS基础工程全过程_第13张图片

你可能感兴趣的:(STM32Cubemx,FreeRTOS,STM32,stm32,嵌入式硬件,单片机)