初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2019-8-14
- 在线时间
- 14 小时
|
5金钱
在网上找的例程
Locate_Rle(100,500,CCW); //500HZ,100脉冲
这个是 改变第一个100的个数可以控制脉冲个数,500是频率,CCW是正反转
原型是
void Locate_Rle(long num,u32 frequency,DIR_Type dir) //相对定位函数
{
if(num<=0) //数值小等于0 则直接返回
{
printf("\r\nThe num should be greater than zero!!\r\n");
return;
}
if(TIM8->CR1&0x01)//上一次脉冲还未发送完成 直接返回
{
printf("\r\nThe last time pulses is not send finished,wait please!\r\n");
return;
}
if((frequency<20)||(frequency>100000))//脉冲频率不在范围内 直接返回
{
printf("\r\nThe frequency is out of range! please reset it!!(range:20Hz~100KHz)\r\n");
return;
}
motor_dir=dir;//得到方向
DRIVER_DIR=motor_dir;//设置方向
if(motor_dir==CW)//顺时针
target_pos=current_pos+num;//目标位置
else if(motor_dir==CCW)//逆时针
target_pos=current_pos-num;//目标位置
rcr_integer=num/(RCR_VAL+1);//重复计数整数部分
rcr_remainder=num%(RCR_VAL+1);//重复计数余数部分
is_rcr_finish=0;//重复计数器未设置完成
TIM8_Startup(frequency);//开启TIM8
}
|
|