【stm32】项目搭建和FreeRTOS

stm32f103rct6开发板

STM32开发笔记

STM32项目搭建

编译工具

  • cmake(安装教程

    1、安装后配置环境变量

  • ARM-GCC 编译器

    1、安装链接

    2、配置环境变量,检验安装成功

    1
    
    arm-none-eabi-gcc -v
    
  • Ninja构建工具

    1、安装链接

    2、配置环境变量

IDE

  • VSCODE

    1、安装插件STM32CubeIDE for Visual Studio Code

    2、安装插件STM32 VS Code Extension,这个插件会自动下载ARM-GCC 编译器ninja构建工具

    3、之后打开项目文件夹即可打开cubemx创建的项目

  • STM32cubemx(用于创建项目)

    1、下载地址

    2、创建教程

烧录工具

连接成功演示

  • 注意事项:烧录时,启动模式得设置为boot0=1,boot1=0,boot0接高电平boot1接GND

串口测试工具

  • SSCOM

使用CUBEMX初始化FreeRTOS项目

FreeRTOS
  • 可以理解为并发(多核同时执行多个任务) 不可以理解为并行(需要单核切换来执行多个任务)
代码结构
  • 主要开发在core/Src和core/Inc目录中,Src目录中用来写具体功能,Inc定义函数和引脚
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
USV_BASE/
├── Core/                          # STM32CubeMX生成(不修改)
│   ├── Inc/
│   │   ├── main.h
│   │   ├── can.h                  # CubeMX配置
│   │   ├── usart.h                # CubeMX配置
│   │   └── ...
│   └── Src/
│       ├── freertos.c             # 任务创建(尽量不要与STM32CubeMX生成的任务代码冲突)
│       ├── can.c                  # CAN中断回调(修改USER CODE区)
│       ├── usart.c                # UART中断回调(修改USER CODE区)
│       └── ...
├── App/                           # 应用代码
│   ├── Inc/
│   │   ├── app_config.h           # 系统配置
│   │   ├── app_types.h            # 公共数据类型
│   │   └── app_def.h              # 宏定义
│   │
│   ├── Driver/                    # 驱动层(2个模块)
│   │   ├── Inc/
│   │   │   ├── driver_can_radar.h
│   │   │   └── driver_sbus.h
│   │   └── Src/
│   │       ├── driver_can_radar.c
│   │       └── driver_sbus.c
│   │
│   ├── Algorithm/                 # 算法模块(可选扩展)
│   │   ├── Inc/
│   │   │   └── algo_avoid.h       # 避障算法
│   │   └── Src/
│   │       └── algo_avoid.c
│   │
│   └── Task/                      # 任务层(3个任务)
│       ├── Inc/
│       │   ├── task_radar.h       # 雷达+避障
│       │   ├── task_sbus.h        # SBUS通信
│       │   └── task_control.h     # 控制决策
│       └── Src/
│           ├── task_radar.c
│           ├── task_sbus.c
│           └── task_control.c
└── Docs/                          # 文档
    └── ArchitectureDesign_Simple.md
  • 修改CUBEMX中定义的引脚会自动修改宏定义和引脚

遇到的问题

1、stlink烧录问题
  • 使用usb口给开发板供电,解决如下问题

ST-LINK烧录问题

  • ST-LINK烧录

    驱动更新:需要重启开发板或断开数据线才能识别

  • 烧录时要按下reset键 点击连接后松开reset,否则会遇到如下问题

评论

评论区加载中...

本站已稳定运行: 计算中... 天 | 博客: 27 篇 | 字数: 21218
使用 Hugo 构建
主题 StackJimmy 设计