您现在的位置是:首页 >其他 >【电机控制】Matlab代码生成FOC控制01——按键控制LED网站首页其他

【电机控制】Matlab代码生成FOC控制01——按键控制LED

电机控制漫游指南 2025-03-22 12:01:03
简介matlab2023的代码生成按钮

功能需求:

由于板载只有 1 个按键和 1 个 LED,因此使用按键按下切换 1 次功能

实现思路:

状态机的输出赋值给 LED 对应的 IO 口

每次按下按键,状态机输出频率变化一次,对应 LED 闪烁频率变化

按键中断回调函数中定义一个变量buttonMode作为 LED 状态的控制变量,每次按下按键buttonMode+1

一、CubeMX 配置

  1. 打开 STM32CubeMX
  2. 选择对应的芯片型号(STM32G474RETx)
  3. 选择时钟来源为外部晶振

  4. 配置时钟树(直接配置为最高,170M),修改图中两个地方即可

  5. debug 接口配置为串行接口

  6. 配置 LED 和按键对应的 GPIO 口

     


    通过查看用户手册,LED 对应的是 PA5,高电平点亮;按键 B1 对应的是 PC13
    LED2 配置为推挽输出,B1 配置为上升沿检测,修改用户标签


    使能 EXTI 中断

  7. 配置定时器
    由于 LED 功能需要延时,这里不使用直接在主循环中使用延时函数,原因留给大家自行思考。

  8. 配置工程名称,路径,编译器等

     

  9. 点击生成代码

二、MATLAB 程序编写

  1. 整体介绍

  2. 按键模块

  3. LED 模块

     

     

     

  4. 针对子系统生成代码

     

三、集成到 Keil

  1. 添加工程文件分组,并将生成的.c 和 .h 文件包含到工程路径

     

  2. 预编译头文件

  3. 在 main 中进行初始化以及开始开启定时器

  4. 在按键中断回调函数运行 Button 算法函数

  5. 在定时器周期中断回调函数运行 LED 算法函数

四、下载验证

【电机控制】代码生成01——按键控制LED

五、问题记录

  • 分别对 LED 模块和 Button 模块生成代码,会出现输出输出端口的结构体重复定义的情况

     

     


    解决方式:修改代码接口为全局变量

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。