请教一个串口控制舵机的程序

2019-08-19 19:28发布

这是我按照原子哥的例程改的一个程序,想实现发送字符控制舵机的转角一点一点变化,程序如下

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "usart.h"
#include "usart3.h"
//ALIENTEK Mini STM32¿a·¢°å·¶ày′úÂë8
//PWMêä3öêμÑé   
//¼¼êõÖ§3Ö£owww.openedv.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾

int main(void)
{       
         
        u8 pwmval1,pwmval2,flag;
  u8 pwm1,pwm2=0;         
  u8 i,t,m,n,x,y=0;       
        delay_init();                                  //Ñóê±oˉêy3õê¼»ˉ          
        LED_Init();       
        TIM8_PWM_Init(199,7199);          //PWM===(7200*200)/72000000=0.02=20ms
       
        usart3_init(36,9600);
        uart_init(9600);

           while(1)
        {        
                 
               
                 if(USART3_RX_STA&0x8000)
                 {
                         
       t=USART3_RX_BUF[0];                         
                         USART1->DR=USART3_RX_BUF[0];
                         while((USART1->SR&0X40)==0);              //等待发送结束
                         
                         USART3_RX_STA=0;
                 }
                 
               
                 if(t=='1')
                 {  
               
                          LED0=0;
                         m++;
                         
        if(m==10)
        {
               m=0;
                                
        pwm1++;
                                        if(pwm1>23) pwm1=23;               
                                }
                                       
                                                                       
                    
                 }                 
                 if(t=='2')
                 {
                       
                                LED0=0;
                          n++;  
        if(n==10)
        {
                 n=0;
               

                                        pwm1--;
                       
                                        if(pwm1<1) pwm1=1;                                       
                                }         
                               
                  
                 }
                  if(t=='3')
                 {  
                          LED0=0;
                          x++;  
        if(x==10)
        {
               x=0;
         pwm2++;        if(pwm2>23) pwm2=23;                                       
                    }       
                 }                 
                 if(t=='4')
                 {
                                LED0=0;
                          y++;  
        if(y==10)
        {
                 y=0;
           pwm2--;        if(pwm2<1) pwm2=1;                                       
                                }       
                  
                 }
                 if(t=='5')
                         break;
                         
                 
                         
                    if(t==0x30)        LED0=1;
                 
                i++; if(i==200) i=0;               
                if(i==1) LED1=!LED1;
                 
                 
                 
     pwmval1=pwm1+170;
                 pwmval2=pwm2+170;

                TIM_SetCompare1(TIM8,pwmval1);           //通道输出
                TIM_SetCompare2(TIM8,pwmval2);           //
                TIM_SetCompare3(TIM8,pwmval1);           //
                TIM_SetCompare4(TIM8,pwmval2);     //
                delay_ms(2);       
               
                       
        }



}


串口 舵机 都是正常的,但是每次发送一个字符舵机便会转到头,并没有出现想象中的发送一次舵机转一点点的情况,还请原子哥和各位大神帮忙看下程序是哪里出了问题,感激不尽!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。