当前位置: 首页 > news >正文

使用STM32H723VGT6芯片驱动达妙电机

首先,安装H7的pack包:

Arm Keil | Keil STM32H7xx_DFP

在这个网站中下载例如这个版本的pack包:

下载完成后,双击pack文件进行安装,会自动安装到keil的安装路径中,再电机Next:

安装完成,点击Finish:


接下来就可以开发基于STM32H7的工程了,基于达妙官方开源的stm32例程【dm_ctrl(h7 fdcan)v1.1 裸机】进行研究:

官方文档:‍​​‌​​⁠‌‍​​‌‌‌‌‌‍​​⁠⁠​​​​⁠⁠​‌‌​‍‌​‍​‌2. 达妙电机上手流程(二)-使用开发板控制电机 - 飞书云文档

查看文档中的MIT模式控制,注意motor[Motor1].id我的设置为了0x03:

/* 在 dm_motor_ctrl.c 文件中 */
void dm_motor_init(void)
{memset(&motor[Motor1], 0, sizeof(motor[Motor1]));    // 初始化Motor1电机结构体// 设置Motor1的电机信息motor[Motor1].id = 0x03;motor[Motor1].mst_id = 0x00;        // 实际没有用上,只做标识作用motor[Motor1].tmp.read_flag = 1;motor[Motor1].ctrl.mode     = mit_mode;    // 选择 MIT 模式motor[Motor1].ctrl.vel_set  = 1.0f;        // 设置速度为 1motor[Motor1].ctrl.pos_set  = 0.0f;motor[Motor1].ctrl.tor_set  = 0.0f;motor[Motor1].ctrl.cur_set  = 0.0f;motor[Motor1].ctrl.kp_set   = 0.0f;        motor[Motor1].ctrl.kd_set   = 1.0f;        // 设置 Kd 为 1// DM4310的 PMAX VMAX TMAXmotor[Motor1].tmp.PMAX      = 12.5f;motor[Motor1].tmp.VMAX      = 30.0f;motor[Motor1].tmp.TMAX      = 10.0f;
}/* 在 main.c 文件中*/
int main(void)
{/* 截取添加的代码如下 */power(1);        // 打开开发板的可控电源接口HAL_Delay(1000); // 等待电机上电自检通过bsp_fdcan_set_baud(&hfdcan1, CAN_CLASS, CAN_BR_1M);      // 设置CAN为经典模式 波特率为1Mbsp_can_init();dm_motor_init();HAL_Delay(10);/* 往电机的寄存器里面写入MIT模式 */write_motor_data(motor[Motor1].id, 10, mit_mode, 0, 0, 0);    // 修改电机为MIT模式HAL_Delay(100);save_motor_data(motor[Motor1].id, 10);        // 保存电机参数HAL_Delay(100);dm_motor_enable(&hfdcan1, &motor[Motor1]);    // 使能电机HAL_Delay(1000);HAL_TIM_Base_Start_IT(&htim3);                // 开启1ms定时器中断用于发送can命令while (1){}
}// 1ms 定时器中断函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == TIM3) {dm_motor_ctrl_send(&hfdcan1, &motor[Motor1]);}
}/* 在 dm_motor_ctrl.c 文件中 */
// 接收中断回调 处理电机回传的信息,默认master id为0,所以这里 rec_id = 0
void fdcan1_rx_callback(void)
{uint16_t rec_id;uint8_t rx_data[8] = {0};fdcanx_receive(&hfdcan1, &rec_id, rx_data);switch (rec_id){case 0x00: dm_motor_fbdata(&motor[Motor1], rx_data); receive_motor_data(&motor[Motor1], rx_data); break;}
}

将上面代码下载入单片机,可以观察到电机匀速旋转

http://www.dtcms.com/a/532422.html

相关文章:

  • 【计算机通识】进程、线程、协程对比讲解--特点、优点、缺点
  • 专业做俄语网站建设上海建设公司注册
  • 南京营销型网站制作建设一个网站需要什么手续
  • POPAI全球启动仪式成功举办|AI×Web3全球算力革命启航
  • PCB笔记
  • C++ 类的学习(六) 虚函数
  • leetcode 2043 简易银行系统
  • 网站插件代码怎么用哪个网站上做自媒体最好
  • 【LeetCode100】--- 97.多数元素【思维导图+复习回顾】
  • Wasserstein 距离简介
  • 南宁网站建设外包vs做的网站如何
  • 【C++】前缀和算法习题
  • GitHub等平台形成的开源文化正在重塑加特
  • 基于单片机的家庭防盗防火智能门窗报警系统设计
  • 响应式网站建设的未来发展网络规划与设计就业前景
  • 【图像处理】图像错切变换
  • Docker环境离线安装-linux服务器
  • 软件设计师知识点总结:结构化开发
  • 持续改变源于团队学习
  • Unity安装newtonsoft
  • Spring Boot3零基础教程,整合 Redis,笔记69
  • 凡科网站官网登录入口wordpress 列表模板
  • 读论文AI prompt
  • 《Ionic 平台:全面解析与深入探讨》
  • 网站做淘宝客有什么要求微网站的优势
  • FFmpeg 基本数据结构 AVStream分析
  • kafka数据同步一致性问题
  • 淘宝网站的建设内容网站建设的平台
  • Linux进程间通信:管道与System V IPC的全解析
  • 技术选型对比:几种主流方案获取淘宝商品实时数据的优劣分析