完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大致思路为捕获到一定数量的上升沿后步进电机开始转动,之前用按键代替可以使电机转动,但现在电机只会震动不知道问题出在哪里?
#include #define uint unsigned int volatile unsigned int i,j,k=0; int cycle[100]; /*****staticconst 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];} //转动步进电机 } } #pragmavector=TIMER1_A1_VECTOR __interruptvoid TIMER_A1(void) { switch(TA1IV) { case 2: cycle=TA1CCR1; //将计数器的数值存入数组中 i++; if(i<=50) { P4OUT &=~ BIT7; //灯的输出 k=1; } if(i>50) { k=2; P4OUT|=BIT7; j++; //步进电机相序累加 if(j==7) {j=0;} // i=0; } } }
|
|
相关推荐
2个回答
|
|
|
步进电机的驱动程序是不是有点问题
|
|
|
|
|
|
频率太低就会出现这种现象,把延时调低点。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1502 浏览 0 评论
4647 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9661 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2939 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2353 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 02:41 , Processed in 0.847971 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3416