软件结构

总览

image.png

  • BSP:板级支持包
  • cmake-build-debug:clion自动生成的编译构建文件夹,编译好的固件在这里面
  • config:OpenOCD的配置文件
  • Core:由STM32CubeMX自动生成的文件
  • Driver:由STM32CubeMX复制的STM32驱动库文件,比如CMSIS库和HAL库
  • FOC:FOC算法
  • GUI:显示屏驱动及图形UI文件夹
  • Middlewares:中间件,即FreeRTOS

    关于Clion如何配置其它文件夹存放文件: 官方教程%2C%20do%20so%20in%20CMakeLists_template.txt%20and%20then%20call%20Update%20CMake%20project%20with%20STM32CubeMX.)中有提示:

    • CLion regenerates CMakeLists.txt from the template every time the project is updated. If you need to make changes in the CMake script (for example, to add external libraries or FPU support), do so in CMakeLists_template.txt and then call Update CMake project with STM32CubeMX.

    如果需要修改CMakeLists.txt文件,比如添加外部库或者是FPU支持,请修改CMakeLists_template.txt文件,然后用STM32CubeMX更新工程 如果要添加其它文件夹,请按如下格式修改

  1. include_directories(${includes}
  2. FOC
  3. FOC/hardware_specific
  4. FOC/sensor
  5. GUI
  6. GUI/st7735
  7. BSP)
  8. file(GLOB_RECURSE SOURCES ${sources}
  9. "FOC/*.*"
  10. "GUI/*.*"
  11. "BSP/*.*")

上电后代码执行顺序

  1. 打开main.c,首先从main函数开始运行
    执行各种初始化

    1. /* Start scheduler */
    2. osKernelStart();

    执行到这句代码时,开启freeRTOS的调度器,此后控制权归FreeRTOS所有,与main函数无关了

  2. 打开freertos.c
    主要关注两个函数

    • MX_FREERTOS_Init:RTOS初始化函数,用于创建各个任务,一旦调度器开启后,只需关注自己创建的任务即可
    • TaskSelectTask:任务选择任务,默认首先执行这个任务,其它任务暂停运行,它用于选择其它任务,一旦选中,则进入其它任务,自生暂停

具体文件介绍

  • BSP:包含了按键检测相关函数,例如GPIO外部中断回调函数
  • FOC/sensor:磁编码器AS5600和电流采样
  • FOC:
    • FOC.c:FOC核心算法,部分从SimpleFOC项目移植
    • FOC_conf.h:配置文件,例如电压、极对数、控制模式
    • FOC_LPF.c:低通滤波器
    • FOC_PID.c:PID控制器
    • FOC_utils.c:用于优化计算速度的一些数学工具和常数定义,从SimpleFOC移植
    • hardware_api.h:与stm32硬件相关,例如pwm占空比设置
  • GUI/st7735:屏幕驱动库
  • GUI:图形用户界面