在线时间218 小时
UID2100041
ST金币0
蝴蝶豆0
注册时间2014-6-8
金牌会员
- 最后登录
- 2020-12-6
|
a0a.1 32b0c
程序中宏定义一下常量: #define BASE_FREQ 400
#define P 16
根据以上宏定义,计算以下公式:BASE_SPEED=120*BASE_FREQ /P,然后将BASE_SPEED带入速度计算公式,在电机不转动的情况下,上位机反馈转速在0与10000多之间来回跳动,检查代码发现,120*BASE_FREQ =120*400=48000>32767,int为16为带符号整形数,范围为-32768~32767,因为在计算120*BASE_FREQ 会将这个中间结果存入int类型的内存区域,这时候4800会溢出内存,所以会导致上述现象。将上式改为BASE_SPEED=120*(BASE_FREQ /P)即可避免上述问题。
|
|