T男孩 2019-04-11 10:53 采纳率: 0%
浏览 1456

MSP430f5529捕获上升沿,当捕获一定数量时驱动步进电机。

用上升沿捕获,当上升沿数量到达我预设目标时,步进电机的相序开始增加,主函数用数组使步进电机转动,可事实是步进电机只是震动,希望请大神看看是不是我逻辑错了

#include<msp430.h>
#define uint unsigned int
volatile unsigned int i,j,k=0;
int cycle[100];
/*****static const unsigned char fullstepA[]=
{ 0x02,0x0a,0x08,0x09,0x01,0x05,0x04,0x06,0x02};****/
static const unsigned char fullstepB[]=
{ 0x02,0x06,0x04,0x05,0x01,0x09,0x08,0x0a,0x02};
void IO()
{
    P1DIR|=BIT0;            //p1.0选择ACLK输出
    //P1OUT&=~BIT0;
    P1SEL|=BIT0;
    P4DIR|=BIT7;
    P4OUT&=~BIT0;
    P2DIR&=~BIT0;
    P2REN |= BIT0;          //启用P2.0内部上下拉电阻
    P2OUT |= BIT0;         //将电阻设置为上拉
    P2SEL|=BIT0;
    P6DIR |=0x0f;
    P6OUT |=0x0f;
}
void main()
{
     WDTCTL = WDTPW | WDTHOLD;
     IO();
    TA1CCTL1=CM_1+SCS+CAP+CCIE;//CCR1工作于捕获模式,同步捕获,上升沿触发,中断使能;
    TA1CTL|=TASSEL_2+MC_2+TACLR+TAIE;//TA1主时钟SMCLK,连续计数模式,清除TAR;
    _EINT();                   //全局中断
    while(1)
    {
       /**** if(k==1) {
             P6OUT=fullstepA[j];
            }*****/
         if(k==2)
         {
             P6OUT=fullstepB[j];}       //转动步进电机
    }
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER_A1(void)
{
    switch(TA1IV)
    { case 2:
    cycle[i]=TA1CCR1;   //将计数器的数值存入数组中
    i++;
    if(i<=50)
    {   P4OUT &=~ BIT7;     //灯的输出
        k=1;       
    }
    if(i>50)
    { k=2;
        P4OUT|=BIT7;
        j++;                    //步进电机相序累加
        if(j==7)
            {j=0;}
   // i=0;
    }
    }

}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 15:31
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)