title: keil的debug小技巧
date: 2020-07-21 19:28:12
tags:
categories: STM32学习记录
背景
调robomaster的6020电机时,需要把pid的数据导出来进行matlab仿真,那么问题就来了,该怎么导出呢,我当时立刻想到的方法是用串口打印数据,利用sprintf把pid的输入输出转成字符串,然后HAL_UART_Transmit()阻塞发送,在定时器中进行pid的计算以及数据的发送,但是效果却不尽人意。
因为电机是通过can总线协议,获取的是电压信息,-30000~30000范围,返回的数据是转速,角度,转矩和温度,调速度环,要看从精致到稳定的输入输出曲线,所以需要打印速度的pid三个信息,再来一个当前速度更加直观。但是,经过调试发现,频率过低,不能很好的与仿真的拟合曲线进行比较,而频率过高,串口发送会出现断层和乱码的情况。这时我就想到一个办法,那就是把数据保存在数组里,然后在线仿真,利用MDK的debug的功能,实现对数组内存的方便的访问。
这个方法不在于有多方便操作,而在于能够非常高频率的获取一些数据,而不会有通信问题而失去一些数据,或者因为系统外干扰而出现大量异常数据。
操作流程
废话不多说,开始走流程。首先保证你的keil版本至少是5以上,低版本的keil操作我不太清楚。
为了防止爆栈,把用于存数据的大数组放在函数外: