您现在的位置是:首页 >其他 >【电机控制】Matlab代码生成FOC控制01——按键控制LED网站首页其他
【电机控制】Matlab代码生成FOC控制01——按键控制LED
简介matlab2023的代码生成按钮
功能需求:
由于板载只有 1 个按键和 1 个 LED,因此使用按键按下切换 1 次功能
实现思路:
状态机的输出赋值给 LED 对应的 IO 口
每次按下按键,状态机输出频率变化一次,对应 LED 闪烁频率变化
按键中断回调函数中定义一个变量buttonMode
作为 LED 状态的控制变量,每次按下按键buttonMode+1
一、CubeMX 配置
- 打开 STM32CubeMX
- 选择对应的芯片型号(STM32G474RETx)
- 选择时钟来源为外部晶振
- 配置时钟树(直接配置为最高,170M),修改图中两个地方即可
- debug 接口配置为串行接口
- 配置 LED 和按键对应的 GPIO 口
通过查看用户手册,LED 对应的是 PA5,高电平点亮;按键 B1 对应的是 PC13
LED2 配置为推挽输出,B1 配置为上升沿检测,修改用户标签
使能 EXTI 中断 - 配置定时器
由于 LED 功能需要延时,这里不使用直接在主循环中使用延时函数,原因留给大家自行思考。 - 配置工程名称,路径,编译器等
- 点击生成代码
二、MATLAB 程序编写
- 整体介绍
- 按键模块
- LED 模块
- 针对子系统生成代码
三、集成到 Keil
- 添加工程文件分组,并将生成的.c 和 .h 文件包含到工程路径
- 预编译头文件
- 在 main 中进行初始化以及开始开启定时器
- 在按键中断回调函数运行 Button 算法函数
- 在定时器周期中断回调函数运行 LED 算法函数
四、下载验证
【电机控制】代码生成01——按键控制LED
五、问题记录
- 分别对 LED 模块和 Button 模块生成代码,会出现输出输出端口的结构体重复定义的情况
解决方式:修改代码接口为全局变量
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。