DJI核心A板按键控制M3508电机斜坡升速与斜坡降速——总结贴

DJI核心A板按键控制M3508电机斜坡升速与斜坡降速——总结帖

按调试过程中出现问题时间倒序排列

  • 升速与降速代码中的公共部分合并写了,如电流发送sendMotorCurrent(),导致电机无法运行(尚不清楚原因):
  • 斜坡函数的重置问题:斜坡函数使用完成后,需resetcounter,下一次才能正常使用;但重置counter代码的位置十分关键,若放在电机降速或升速的代码中,将导致卡在斜坡起始位置,无法完成斜坡函数(因为中断循环会每次都重置counter)。解决方法:将重置counter代码放在按键中断里,当每按一次键就重置counter(关键是实现只resetcounter一次就进入电机转速斜坡上升或下降,在斜坡完成前不能再次运行resetcounter)
  • 串口printf调试方法比较实用(注意串口名称USART/UART
  • Visualscope虚拟示波器的使用:工程中添加visuascope.c/h文件;在main.c中调用visuascope函数开启调试;
while(1){
		VisualScope(UART7,getMotorVelocity(),getMotorTargetSpeed(),0,0);//visualscope示波器调试电机PID
		delay_ms(1);
	}

在visualscope界面勾选如图位置,Check Sum和CPC16的选择要根据visualscope中的相关设置确定,底部对应通道的勾一定要勾上;
Visualscope界面
再设置好波特率和串口COM值(设备管理器读取或串口调试助手XCOM中看)
在这里插入图片描述
程序下载到板子reset之后,点击run和resume(顶部第三个按钮)即可实时观察波形

  • 按键次数判断方法:在按键中断中设置计数递增变量,按%取余的方式判断奇偶,区分第一次和第二次按键(要注意变量初始0为偶数需去除);设立标志位flag,按键中断里标志位翻转(待补充
  • 定时器中断处理函数里别误把清除中断标志位放在controlloop()前面了,否则contrLoop()不执行
  • 常用调试方法:串口printf;设置led;设置蜂鸣器beep;设置断点;visualscope示波器
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值