博士
最后登录1970-1-1
在线时间 小时
注册时间2015-10-31
|
本帖最后由 CSWZH8 于 2017-3-18 17:20 编辑
- //motor,2½½øμç»úÇy¶ˉ
- #include "motor.h"
- #include <includes.h>
- volatile unsigned char motor_flag=0;//¿aÆô2½½øμç»ú±ê¼Ç
- volatile unsigned int rad=0; //×a¶ˉè|êy
- volatile unsigned char direct=0;//×a¶ˉ·½Ïò,'s'Ë3ê±Õë,'n'Äæê±Õë
- uint16_t CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //Äæê±Õ룬ê1óÃμíËÄ룬P1^0---P1^3
- uint16_t CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //Ë3ê±Õë
-
- //3õê¼»ˉ2½½øμç»ú¿ØÖÆòy½Å
- void motor_init(void)
- {
- /*¶¨òåò»¸öGPIO_InitTypeDefààDíμĽá11ìå*/
- GPIO_InitTypeDef motor_GPIO_InitStructure;
- //2½½øμç»úêäèëòy½ÅÎaPB8,PB9,PB10,PB11
- RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOB, ENABLE );
- motor_GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
- motor_GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- motor_GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init (GPIOB , & motor_GPIO_InitStructure);
- GPIO_ResetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11);
- }
-
- //Ñóê±oˉêy
- void delaynms(unsigned int aa)
- {
- //OSTimeDly(aa,OS_OPT_TIME_DLY, NULL);
- Delay_us(500);
- }
- //Ñóê±oˉêy
- void delay500us(void)
- {
-
- }
- //μç»ú·′Ïò×a¶ˉcntè|
- void motor_ccw(unsigned int cnt) //·′Ïò×a¶ˉ
- {
- unsigned char i,j,k=cnt;
- while(k--)
- for(j=0;j<8;j++) //′óÑ-»·8′Î×a¶ˉò»Öü
- {
- for(i=0;i<8;i++) //D¡Ñ-»·8′Î×a¶ˉ45¶è
- {
- GPIO_Write(GPIOB, ( GPIO_ReadOutputData(GPIOB) & 0xf0ff )|(CCW[i]<<8 ));
- delaynms(1);
- }
- }
- GPIO_Write(GPIOB, ( GPIO_ReadOutputData(GPIOB) & 0xf0ff ));
- }
- //μç»úÕyÏò×a¶ˉcntè|
- void motor_cw(unsigned int cnt) //ÕyÏò×a¶ˉ
- {
- unsigned char i,j,k=cnt;
- while(k--)
- for(j=0;j<8;j++) //′óÑ-»·8′Î×a¶ˉò»Öü
- {
- for(i=0;i<8;i++) //D¡Ñ-»·8′Î×a¶ˉ45¶è
- {
- GPIO_Write(GPIOB, ( GPIO_ReadOutputData(GPIOB) & 0xf0ff )|(CW[i]<<8 ));
- delaynms(1);
- }
- }
- GPIO_Write(GPIOB, ( GPIO_ReadOutputData(GPIOB) & 0xf0ff ));
- }
- //¸ù¾Ycè·¶¨×a¶ˉ·½Ïò£¬2¢×a¶ˉcntè|êy
- void roll(unsigned char c,unsigned int cnt)
- {
- if(c=='s' || c=='S')
- motor_cw( cnt);
- else if(c=='n' || c=='N')
- motor_ccw( cnt) ;
- GPIO_Write(GPIOB, ( GPIO_ReadOutputData(GPIOB) & 0xf0ff ));
- }
复制代码
注释好像有问题,呃呃呃
|
|