OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4244|回复: 12

18路pwm输出遇到问题,求助

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
发表于 2015-5-13 22:09:43 | 显示全部楼层 |阅读模式
5金钱
本人为了激发儿子对科技的兴趣,做成了六足机器人,为了找出18个控制舵机的pwm ,出现了好多问题。
1、用tim3就不能用tim8,好像两个有冲突。
2、现在18舵机还有一个有问题,我用tim1输出pwm 下载好程序tim1能正常输出,但是重启后,四路只有一路可以输出。
遇到这样问题过的高手们帮助,谢了!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-13 22:42:52 | 显示全部楼层
好老爸啊。呵呵。
18个舵机,应该还是可以找出这么多PWM来的,你现在用什么MCU?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
 楼主| 发表于 2015-5-13 23:05:35 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
stm32 f103zet6
1.用tim8 tim3 不能用
2.tim1下载到板子能用,重启后又不能用了
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
 楼主| 发表于 2015-5-13 23:07:49 | 显示全部楼层
现在机器人可能走了,但只下载好不重启
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
 楼主| 发表于 2015-5-13 23:09:35 | 显示全部楼层
  #include "myhead.h"
  void RCC_Configration(void);
  void GIOP_Configration(void);
void  WM_Configration(void);
void NVIC_InitConfigration(void);
void USART_InitConfigration(void);
// void setSpeed(int org,int tar,int nSpeed);
void  check(void);
enum serverName {LeftFrontA,LeftFrontB,LeftFrontC,LeftCentrA,LeftCentrB,LeftCentrC,LeftBackA,LeftBackB,LeftBackC,RightFrontA,RightFrontB,RightFrontC,RihgtCenterA,RihgtCenterB,RihgtCenterC,RihgtBackA,RihgtBackB,RihgtBackC};

   void setArgl(enum serverName aa,int angle);
void startStu(void);
void go(void);
void back(void);
void left(void);
void right(void);
void gongi(void);
int standHigh=130; 
int severC=140;
int flag=0;
int step=15;
int high=0;
 
char cmd;
 int main(void)
 { 
RCC_Configration( );
GIOP_Configration( ); 
PWM_Configration(); 
NVIC_InitConfigration();
USART_InitConfigration();
high=40+standHigh;
delay_ms(3000);
   startStu();
delay_ms(3000);
 
while(1)
  {  

if(cmd=='a') go();
if(cmd=='b') back();
if(cmd=='c')left();
if(cmd=='d')right();
if(cmd=='f')startStu();
if(cmd=='e')gongi();
// startStu();

  }

 void  WM_Configration(void)
 {
 TIM_TimeBaseInitTypeDef TIM_InitStruct;
 TIM_OCInitTypeDef TIM_OCInitStrue;
 TIM_InitStruct.TIM_Period=2000;
 TIM_InitStruct.TIM_Prescaler=720-1;
 TIM_InitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
 TIM_InitStruct.TIM_CounterMode=TIM_CounterMode_Up;
 
 TIM_TimeBaseInit(TIM1,&TIM_InitStruct);
    TIM_TimeBaseInit(TIM2,&TIM_InitStruct);
 TIM_TimeBaseInit(TIM3,&TIM_InitStruct);
    TIM_TimeBaseInit(TIM4,&TIM_InitStruct);
    TIM_TimeBaseInit(TIM5,&TIM_InitStruct);

 TIM_OCInitStrue.TIM_OCMode=TIM_OCMode_PWM1;
 TIM_OCInitStrue.TIM_OCPolarity=TIM_OCPolarity_High;
 TIM_OCInitStrue.TIM_OutputState=TIM_OutputState_Enable;
 
 TIM_OC1Init(TIM1,&TIM_OCInitStrue);       //Tim1TIM_OCPreload_Disable
 TIM_OC1PreloadConfig(TIM1,ENABLE);
TIM_OC2Init(TIM1,&TIM_OCInitStrue);
 TIM_OC2PreloadConfig(TIM1,ENABLE);
TIM_OC3Init(TIM1,&TIM_OCInitStrue);
 TIM_OC3PreloadConfig(TIM1,ENABLE);
 
 TIM_OC4Init(TIM1,&TIM_OCInitStrue);
 TIM_OC4PreloadConfig(TIM1,ENABLE);
   
TIM_OC1Init(TIM2,&TIM_OCInitStrue);       //Tim2
TIM_OC1PreloadConfig(TIM2,ENABLE);
TIM_OC2Init(TIM2,&TIM_OCInitStrue);
TIM_OC2PreloadConfig(TIM2,ENABLE);
TIM_OC3Init(TIM2,&TIM_OCInitStrue);
TIM_OC3PreloadConfig(TIM2,ENABLE);
TIM_OC4Init(TIM2,&TIM_OCInitStrue);
TIM_OC4PreloadConfig(TIM2,ENABLE);

 
TIM_OC1Init(TIM3,&TIM_OCInitStrue);       //Tim3
TIM_OC1PreloadConfig(TIM3,ENABLE);
TIM_OC2Init(TIM3,&TIM_OCInitStrue);
TIM_OC2PreloadConfig(TIM3,ENABLE);
TIM_OC3Init(TIM3,&TIM_OCInitStrue);
TIM_OC3PreloadConfig(TIM3,ENABLE);
TIM_OC4Init(TIM3,&TIM_OCInitStrue);
TIM_OC4PreloadConfig(TIM3,ENABLE);
 
TIM_OC1Init(TIM4,&TIM_OCInitStrue);       //time4
TIM_OC1PreloadConfig(TIM4,ENABLE);
TIM_OC2Init(TIM4,&TIM_OCInitStrue);
TIM_OC2PreloadConfig(TIM4,ENABLE);
TIM_OC3Init(TIM4,&TIM_OCInitStrue);
TIM_OC3PreloadConfig(TIM4,ENABLE);
TIM_OC4Init(TIM4,&TIM_OCInitStrue);
TIM_OC4PreloadConfig(TIM4,ENABLE);
 
TIM_OC1Init(TIM5,&TIM_OCInitStrue);       //time5
TIM_OC1PreloadConfig(TIM5,ENABLE);
TIM_OC2Init(TIM5,&TIM_OCInitStrue);
TIM_OC2PreloadConfig(TIM5,ENABLE);
TIM_OC3Init(TIM5,&TIM_OCInitStrue);
TIM_OC3PreloadConfig(TIM5,ENABLE);
TIM_OC4Init(TIM5,&TIM_OCInitStrue);
TIM_OC4PreloadConfig(TIM5,ENABLE); 
 TIM_Cmd(TIM1,ENABLE);
    TIM_Cmd(TIM2,ENABLE);
TIM_Cmd(TIM3,ENABLE);
    TIM_Cmd(TIM4,ENABLE);
   TIM_Cmd(TIM5,ENABLE);
  TIM_CtrlPWMOutputs(TIM1,ENABLE); //what is
  GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,ENABLE);

 } 
 
void GIOP_Configration(void)
{
GPIO_InitTypeDef GPIO_InitStruct;         
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;          //time1_1        LeftFrontA
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

       
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;          
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);
     
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;          
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);


GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11;          //time1_4       LeftFrontB
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_15;          //time2_1       LeftFrontC
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);
 
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;          //time2_2        LeftCentrA
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;          //time2_3       LeftCentrB
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11;          //time2_4       LeftCentrC
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6;          //time3_1        LeftBackA
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;          //time3_2        LeftBackB
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;          //time3_3        LeftBackC
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;          //time3_4        RightFrontA
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6;          //time4_1        RightFrontB
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;           //time4_2       RightFrontC
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;           //time4_3       RihgtCenterA
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;           //time4_4       RihgtCenterB
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_InitStruct);
 
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;          //time5_1        RihgtCenterC
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;          //time5_2         RihgtBackA
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;          //time5_3         RihgtBackB
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;          //time5_4         RihgtBackC
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStruct);


GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;         
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOC,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11;         
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOC,&GPIO_InitStruct);
}


void RCC_Configration(void)

SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM4|RCC_APB1Periph_TIM5,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);

}

void NVIC_InitConfigration(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStruct.NVIC_IRQChannel=UART4_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStruct);
}

void USART_InitConfigration(void)
{

USART_InitTypeDef USART_InitStruct;
USART_InitStruct.USART_BaudRate=9600;
USART_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_InitStruct.USART_Parity=USART_Parity_No;
USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_Init(UART4,&USART_InitStruct);
USART_ITConfig(UART4,USART_IT_RXNE,ENABLE);
  USART_Cmd(UART4,ENABLE);
}

int fputc(int ch,FILE *f)
{

USART_SendData(UART4,ch);
while(USART_GetFlagStatus(UART4,USART_FLAG_TXE )==RESET);
return ch;
}
//????????
void setArgl(enum serverName aa, int angle)
{
int nTemp;
if(aa==RightFrontA||aa==RightFrontB||aa==RightFrontC||aa==RihgtCenterA||aa==RihgtCenterB||aa==RihgtCenterC||aa==RihgtBackA||aa==RihgtBackB||aa==RihgtBackC)
nTemp=55+(float)(250-55)*((float)(180-angle)/(float)180);
else nTemp=55+(float)(250-55)*((float)(angle)/(float)180);
switch(aa)
{
case LeftFrontA:   TIM_SetCompare1(TIM1,nTemp); break;
case LeftFrontB:   TIM_SetCompare4(TIM1,nTemp);break;
case LeftFrontC:   TIM_SetCompare1(TIM2,nTemp);break;
case LeftCentrA:   TIM_SetCompare2(TIM2,nTemp);break;
case LeftCentrB:   TIM_SetCompare3(TIM2,nTemp);break;
case LeftCentrC:   TIM_SetCompare4(TIM2,nTemp);break;
case LeftBackA:    TIM_SetCompare1(TIM3,nTemp);break;
case LeftBackB:    TIM_SetCompare2(TIM3,nTemp);break;
case LeftBackC:    TIM_SetCompare3(TIM3,nTemp);break;
case RightFrontA:  TIM_SetCompare4(TIM3,nTemp);break;
case RightFrontB:  TIM_SetCompare1(TIM4,nTemp);break;
case RightFrontC:  TIM_SetCompare2(TIM4,nTemp);break;
case RihgtCenterA: TIM_SetCompare3(TIM4,nTemp);break;
case RihgtCenterB: TIM_SetCompare4(TIM4,nTemp);break;
case RihgtCenterC: TIM_SetCompare1(TIM5,nTemp);break;
case RihgtBackA:   TIM_SetCompare2(TIM5,nTemp);break;
case RihgtBackB:   TIM_SetCompare3(TIM5,nTemp);break;
case RihgtBackC:   TIM_SetCompare4(TIM5,nTemp);break;
  }
}
void  check(void)
{
 setArgl(LeftFrontA,130);
 setArgl(LeftFrontB,90);
 setArgl(LeftFrontC,90);
 setArgl(LeftCentrA,90);
 setArgl(LeftCentrB,90);
 setArgl(LeftCentrC,90);
 setArgl(LeftBackA,90);
 setArgl(LeftBackB,90);
 setArgl(LeftBackC,90);
 setArgl(RightFrontA,90);
 setArgl(RightFrontB,90);
 setArgl(RightFrontC,90);
 setArgl(RihgtCenterA,90);
 setArgl(RihgtCenterB,90);
 setArgl(RihgtCenterC,90);
 setArgl(RihgtBackA,90);
 setArgl(RihgtBackB,90);
 setArgl(RihgtBackC,90);  
}

void go(void)
{
 if(flag==0)
  {
setArgl(LeftFrontA,90);       //lf up
 setArgl(LeftBackA,90);
 setArgl(RihgtCenterA,90);
 
setArgl(LeftFrontB,high);
          setArgl(LeftBackB,high);
          setArgl(RihgtCenterB,high);
 
setArgl(LeftFrontC,155);
setArgl(LeftBackC,155);  
setArgl(RihgtCenterC,155);

delay_ms(100);

setArgl(LeftFrontA,90+step);  //lf uping go
 setArgl(LeftBackA,90+step);
 setArgl(RihgtCenterA,90+step);
 
setArgl(LeftFrontB,high);
          setArgl(LeftBackB,high);
          setArgl(RihgtCenterB,high);

setArgl(LeftFrontC,155);
setArgl(LeftBackC,155);  
setArgl(RihgtCenterC,155);

setArgl(RightFrontA,90-step); //rf downing back
setArgl(RihgtBackA,90-step);
setArgl(LeftCentrA,90-step);

setArgl(RightFrontB,140);
setArgl(RihgtBackB,140);
setArgl(LeftCentrB,140);

setArgl(RightFrontC,severC);
setArgl(RihgtBackC,severC);
setArgl(LeftCentrC,severC);

delay_ms(200);

flag=1;
    } 
 setArgl(LeftFrontA,90+step);          //lf down
setArgl(LeftBackA,90+step);
setArgl(RihgtCenterA,90+step); 
 
   setArgl(LeftFrontB,140);
      setArgl(LeftBackB,140);
      setArgl(RihgtCenterB,140);
 
   setArgl(LeftFrontC,severC);  
   setArgl(LeftBackC,severC);
   setArgl(RihgtCenterC,severC);

 delay_ms(100);
 
 setArgl(RightFrontA,90-step);         //rf up
setArgl(RihgtBackA,90-step);
setArgl(LeftCentrA,90-step);
 
 setArgl(RightFrontB,high);
setArgl(RihgtBackB,high);
setArgl(LeftCentrB,high);
 
 setArgl(RightFrontC,155);
 setArgl(RihgtBackC,155);
 setArgl(LeftCentrC,155);

   delay_ms(100);

 setArgl(LeftFrontA,90-step);         //lf downing back
setArgl(LeftBackA,90-step);
setArgl(RihgtCenterA,90-step);

   setArgl(LeftFrontB,140);
      setArgl(LeftBackB,140);
      setArgl(RihgtCenterB,140);

   setArgl(LeftFrontC,severC);
   setArgl(LeftBackC,severC);  
   setArgl(RihgtCenterC,severC);


 setArgl(RightFrontA,90+step);       //rf uping go
setArgl(RihgtBackA,90+step);
setArgl(LeftCentrA,90+step);

 setArgl(RightFrontB,high);
setArgl(RihgtBackB,high);
setArgl(LeftCentrB,high);

 setArgl(RightFrontC,155);
 setArgl(RihgtBackC,155);
 setArgl(LeftCentrC,155);

 delay_ms(200);                      

 setArgl(RightFrontA,90+step);        //rf down
setArgl(RihgtBackA,90+step);
setArgl(LeftCentrA,90+step); 


 setArgl(RightFrontB,140);
setArgl(RihgtBackB,140);
setArgl(LeftCentrB,140);

 setArgl(RightFrontC,severC);
 setArgl(RihgtBackC,severC);
 setArgl(LeftCentrC,severC);

 delay_ms(100);

  setArgl(LeftFrontA,90-step);        //lf  up
setArgl(LeftBackA,90-step);
setArgl(RihgtCenterA,90-step);

   setArgl(LeftFrontB,high);
      setArgl(LeftBackB,high);
      setArgl(RihgtCenterB,high);

   setArgl(LeftFrontC,155);  
   setArgl(LeftBackC,155);  
   setArgl(RihgtCenterC,155);

 delay_ms(100);

 setArgl(LeftFrontA,90+step);        //lf uping go
setArgl(LeftBackA,90+step);
setArgl(RihgtCenterA,90+step);


   setArgl(LeftFrontB,high);
      setArgl(LeftBackB,high);
      setArgl(RihgtCenterB,high);

   setArgl(LeftFrontC,155);  
   setArgl(LeftBackC,155);  
   setArgl(RihgtCenterC,155);

 setArgl(RightFrontA,90-step);        //rf downing back
setArgl(RihgtBackA,90-step);
setArgl(LeftCentrA,90-step); 


 setArgl(RightFrontB,140);
setArgl(RihgtBackB,140);
setArgl(LeftCentrB,140);

 setArgl(RightFrontC,severC);
 setArgl(RihgtBackC,severC);
 setArgl(LeftCentrC,severC);

delay_ms(200); 
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-13 23:29:40 | 显示全部楼层
回复【3楼】liha99:
---------------------------------
zet6,18个PWM没压力吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
 楼主| 发表于 2015-5-13 23:44:40 | 显示全部楼层
我只敢用定时器有四个通道,其它什么互补pwm,等等,不知道能用不能用,因为我开始接触stm32,c语言也好多年前的用的,现在用c#。能不能再找几路,为18路我端口复用都用上,把串口1不用(因为和tim1脚共)改成串口4。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-14 00:01:22 | 显示全部楼层
回复【7楼】
互补不行
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
 楼主| 发表于 2015-5-14 00:16:50 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
能不能解决tim3 与tim8问题,只要tim8有  TIM_CtrlPWMOutputs(TIM,ENABLE);这一句tim3好像不能用,
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2015-5-14 01:34:09 | 显示全部楼层
舵机用的pwm信号才50Hz,干脆直接用端口模拟吧。
业余程序玩家。
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-5-13
在线时间
0 小时
 楼主| 发表于 2015-5-14 06:52:42 | 显示全部楼层



现在能向前,向后,旋转,就只剩一个关节了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-14 22:26:23 | 显示全部楼层
回复【9楼】liha99:
---------------------------------
 回复【7楼】study-c:
---------------------------------
tim3和TIM8,不存在冲突啊

只要你TIM8不开启CHxN输出,就不影响才对的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-5-8
在线时间
8 小时
发表于 2015-7-16 12:35:09 | 显示全部楼层
我也在做六足机器人,昨天刚试着用TIM3产生4路不同的占空比的PWM波  晚上在整理定时器IO口的时候才发现  TIM2根TIM5的四个通道是相同的IO口 这个是要用完全重映射避免么? TIM 1,2,3,4,8五个定时器产生20路PWM波控制20个舵机,然后TIM5做定时器中断,是这样么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 02:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表