求一个msp430控制舵机控制板的程序

[复制链接]
2933|5
 楼主| 小灰灰001 发表于 2014-8-25 17:20 | 显示全部楼层 |阅读模式
这几天都在做这个  #include <msp430x14x.h>
#include "Config.h"

//*************************************************************************
//               MSP430串口初始化
//*************************************************************************
void UART_Init()
{
  U0CTL|=SWRST;               //复位SWRST
  U0CTL|=CHAR;                //8位数据模式
  U0TCTL|=SSEL1;              //SMCLK为串口时钟
  U0BR1=baud_h;               //BRCLK=8MHZ,Baud=BRCLK/N
  U0BR0=baud_l;               //N=UBR+(UxMCTL)/8
  U0MCTL=0x00;                //微调寄存器为0,波特率9600bps
  ME1|=UTXE0;                 //UART1发送使能
  ME1|=URXE0;                 //UART1接收使能
  U0CTL&=~SWRST;
  IE1|=URXIE0;                //接收中断使能位
  //IE1|=UTXIE0;
  P3SEL|= BIT4;               //设置IO口为普通I/O模式
  P3DIR|= BIT4;               //设置IO口方向为输出
  P3SEL|= BIT5;
}
char *s={"#3P1151T1000\r\n"};
char *ss={"#4P1151T1000\r\n"};
char *sss={"#3P551T1000\r\n"};

//*************************************************************************
//              串口0发送数据函数
//*************************************************************************

void Send_Byte(char data)
{
  while((IFG1&UTXIFG0)==0);          //发送寄存器空的时候发送数据
    U0TXBUF=data;
}
void Print_Str(char *s)  //串口发送字符串函数
{
    while(*s != '\0')
    {
        Send_Byte(*s++);
    }
}

//*************************************************************************
//               处理来自串口 0 的接收中断
//*************************************************************************

#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
  uchar data;
  data=U0RXBUF;                       //接收到的数据存起来
  Send_Byte(data);                   //将接收到的数据再发送出去
  Print_Str(s);
}

//*************************************************************************
//            处理来自串口 0 的发送中断,预留
//*************************************************************************

#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX_ISR(void)
{
  //Print_Str("#3P1151T1000\r\n");

}

//*************************************************************************
//           主函数
//*************************************************************************
void main(void)
{
  WDT_Init();                         //看门狗设置
  Clock_Init();                       //系统时钟设置
  UART_Init();                        //串口设置初始化
  _EINT();                            //开中断
  while(1)                            //无限循环
    {  
      
      Print_Str(s);
      delay_ms(1500);
      Print_Str(ss);
      delay_ms(1500);
      Print_Str(sss);
      delay_ms(1500);
      Print_Str("#4P851T1000\r\n");
      delay_ms(1500);
    }
}
可是 舵机就是不动   好伤心
dirtwillfly 发表于 2014-8-25 20:49 | 显示全部楼层
看过驱动舵机的io有没有波形?

评分

参与人数 1威望 +1 收起 理由
小灰灰001 + 1 赞一个!

查看全部评分

firstblood 发表于 2014-8-25 22:25 | 显示全部楼层
用PWM进行控制的吧还是?
zh113214 发表于 2014-8-25 23:13 | 显示全部楼层
感觉挺简单的,不过这种方式控制的PWM信号应该不错,,。
 楼主| 小灰灰001 发表于 2014-8-26 09:38 | 显示全部楼层
有波形   舵机就是不动   真伤心
周董 发表于 2014-8-27 22:59 | 显示全部楼层
串口0接收中断是不是有问题啊??

评分

参与人数 1威望 +1 收起 理由
小灰灰001 + 1 赞一个!

查看全部评分

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

本版积分规则

2

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部