OpenEdv-开源电子网

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

写的程序,做实验时,电机2和电机三及tim2的ch2和ch3通电时转,过几秒钟就不转了,求大神讲解

[复制链接]

17

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-5-7
在线时间
0 小时
发表于 2015-6-10 19:49:57 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]写的程序,做实验时,电机2和电机三及tim2的ch2和ch3通电时转,过几秒钟就不转了,求大神讲解[/mw_shl_code] [mw_shl_code=c,true]#include "led.h" #include "delay.h" #include "sys.h" #include "pwm.h" #include "usart.h" #include "includes.h" //ALIENTEK Mini STM32??·?°?·????ú??35 //UCOSII???é1-?????÷?? //?????§????www.openedv.com //?????????í??×????????????? /////////////////////////UCOSII?????è??/////////////////////////////////// u16 s=0; INT8U err; //START ???? //?è???????????? #define START_TASK_PRIO 10 //?????????????????è????×??? //?è???????????ó?? #define START_STK_SIZE 64 //???????? OS_STK START_TASK_STK[START_STK_SIZE]; //???????? void start_task(void *pdata); //PWM???? //?è???????????? #define PWM_TASK_PRIO 4 //?è???????????ó?? #define PWM_STK_SIZE 64 //???????? OS_STK PWM_TASK_STK[PWM_STK_SIZE]; //???????? void PWM_task(void *pdata); //LED1???? //?è???????????? #define LED1_TASK_PRIO 7 //?è???????????ó?? #define LED1_STK_SIZE 64 //???????? OS_STK LED1_TASK_STK[LED1_STK_SIZE]; //???????? void led1_task(void *pdata); //?®?? #define USART_TASK_PRIO 6 //?????????????????è????×??? //?è???????????ó?? #define USART_STK_SIZE 64 //???????? OS_STK USART_TASK_STK[USART_STK_SIZE]; //???????? void USART_task(void *pdata); OS_EVENT *LED0_Box; //???ú #define duoji_TASK_PRIO 5 //?????????????????è????×??? //?è???????????ó?? #define duoji_STK_SIZE 64 //???????? OS_STK duoji_TASK_STK[USART_STK_SIZE]; //???????? void duoji_task(void *pdata); u8 t,i; u8 len; u8 dir=1; u16 times=0,pp[14],x,y,duoji,xx,yy; u16 led0pwmval=0; /*u16 a0[8]={0,1,0,1,1,0,1,0}; u16 a1[8]={0,0,0,0,1,0,0,0}; u16 a2[8]={1,0,0,1,0,1,1,0}; u16 a3[8]={0,1,0,1,1,0,1,0}; u16 a4[8]={0,0,0,0,0,0,0,0}; u16 a5[8]={1,0,1,0,0,1,0,1}; u16 a6[8]={0,1,1,0,1,0,0,1}; u16 a7[8]={0,1,1,0,1,0,0,1}; u16 a8[8]={1,0,1,0,0,1,0,1}; u16 a9[8]={1,0,1,0,1,0,1,0}; u16 aa[8]={0,1,0,1,0,1,0,1};*/ u16 a0[8]={1,0,1,0,0,1,0,1}; u16 a1[8]={0,1,1,0,1,0,0,1}; u16 a2[8]={0,1,1,0,1,0,0,1}; u16 a3[8]={1,0,1,0,0,1,0,1}; u16 a4[8]={0,0,0,0,0,0,0,0}; u16 a5[8]={0,1,0,1,1,0,1,0}; u16 a6[8]={1,0,0,1,0,1,1,0}; u16 a7[8]={1,0,0,1,0,1,1,0}; u16 a8[8]={0,1,0,1,1,0,1,0}; u16 a9[8]={0,1,0,1,0,1,0,1}; u16 aa[8]={1,0,1,0,1,0,1,0}; void zhuanhuan(u16 *ch) { M1A=ch[0]; M1B=ch[1]; M2A=ch[2]; M2B=ch[3]; M3A=ch[4]; M3B=ch[5]; M4A=ch[6]; M4B=ch[7]; } int main(void) { delay_init(); //???±?????????? uart_init(9600); TIM1_PWM_Init(7999,0); NVIC_Configuration(); LED_Init(); //????????LED?????????????? OSInit(); LED0_Box=OSMboxCreate((void *)0); OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//???¨???????? OSStart(); } //???????? void start_task(void *pdata) { OS_CPU_SR cpu_sr=0; pdata = pdata; OS_ENTER_CRITICAL(); //??????????(??·¨±??????ò??) °?×°?????? UCOSII???±?? OSTaskCreate(PWM_task,(void *)0,(OS_STK*)&WM_TASK_STK[PWM_STK_SIZE-1],PWM_TASK_PRIO); OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO); OSTaskCreate(USART_task,(void *)0,(OS_STK*)&USART_TASK_STK[USART_STK_SIZE-1],USART_TASK_PRIO); OSTaskCreate(PWM_task,(void *)0,(OS_STK*)&WM_TASK_STK[PWM_STK_SIZE-1],PWM_TASK_PRIO); OSTaskSuspend(START_TASK_PRIO); //????????????. OS_EXIT_CRITICAL(); //??????????(????±??????ò??) } //LED0???? void PWM_task(void *pdata) { while(1) { //a=OSMboxPend(LED0_Box,10,&err); //LED0=*a; //delay_ms(300); for(i=0;i<14;i++) { if(USART_RX_BUF=='0') pp=0; if(USART_RX_BUF=='1') pp=1; if(USART_RX_BUF=='2') pp=2; if(USART_RX_BUF=='3') pp=3; if(USART_RX_BUF=='4') pp=4; if(USART_RX_BUF=='5') pp=5; if(USART_RX_BUF=='6') pp=6; if(USART_RX_BUF=='7') pp=7; if(USART_RX_BUF=='8') pp=8; if(USART_RX_BUF=='9') pp=9; } //if(USART_RX_BUF[1]=='0') y=(1000*pp[5]+100*pp[4]+10*pp[3]+pp[2]); x=(1000*pp[9]+100*pp[8]+10*pp[7]+pp[6]); xx=0.707*(x-y); yy=0.727*(x+y); //if(USART_RX_BUF[1]=='1') //else duoji=0; if(x>7999) xx=7999; if(y>7999) yy=7999; if(pp[1]==1) { switch(pp[0]) { case 0: zhuanhuan(a0);break; case 1: zhuanhuan(a1);break; case 2: zhuanhuan(a2);break; case 3: zhuanhuan(a3);break; case 4: zhuanhuan(a4);break; case 5: zhuanhuan(a5);break; case 6: zhuanhuan(a6);break; case 7: zhuanhuan(a7);break; case 8: zhuanhuan(a8);break; } /*if(pp[0]==3||pp[0]==5) xx=yy; if(pp[0]==1||pp[0]==7) xx=yy;*/ TIM2->CCR1=yy; TIM2->CCR2=xx; TIM2->CCR3=yy; TIM2->CCR4=xx; } else{ if(pp[1]==0)//???±??×? zhuanhuan(a9); if(pp[1]==2)//???±??×? zhuanhuan(aa); TIM2->CCR1=3000; TIM2->CCR2=3000; TIM2->CCR3=3000; TIM2->CCR4=3000; } delay_ms(100); } } //LED1???? void led1_task(void *pdata)//????????????×??? { while(1) { LED1=0; delay_ms(300); LED1=1; delay_ms(300); }; } //USART???? void USART_task(void *pdata) { u8 t; u8 len; u16 times=0; while(1) { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//?????????????????????¤?? printf("\r\n?ú·???????????:\r\n"); for(t=0;t<len;t++) { USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0);//????·????á?? } printf("\r\n\r\n");//???????? USART_RX_STA=0; }else { times++; if(times%5000==0) { printf("\r\nALIENTEK MiniSTM32??·?°? ?®?????é\r\n"); printf("??????×?@ALIENTEK\r\n\r\n\r\n"); } if(times%200==0)printf("??????????,???????ü?á??\r\n"); if(times%30==0)//????LED0,?á??????????????. { LED0=!LED0; } delay_ms(10); } } } //???ú???? void duoji_task(void *pdata)//????????????×??? { while(1) { for(i=2;i<10;i++) { if(USART_RX_BUF=='0') pp[i-2]=0; if(USART_RX_BUF=='1') pp[i-2]=1; if(USART_RX_BUF=='2') pp[i-2]=2; if(USART_RX_BUF=='3') pp[i-2]=3; if(USART_RX_BUF=='4') pp[i-2]=4; if(USART_RX_BUF=='5') pp[i-2]=5; if(USART_RX_BUF=='6') pp[i-2]=6; if(USART_RX_BUF=='7') pp[i-2]=7; if(USART_RX_BUF=='8') pp[i-2]=8; if(USART_RX_BUF=='9') pp[i-2]=9; } duoji=(1000*pp[4]+100*pp[5]+10*pp[6]+pp[7])/4095*2000; GPIO_SetBits(GPIOB,GPIO_Pin_2); delay_us(duoji); }; } [/mw_shl_code]

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 23:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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