新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2017-7-20
- 在线时间
- 11 小时
|
1金钱
要用stm32f103c8控制步进电机旋转角度,要用到AD转换,现在步进电机已经可以转动了,想要用AD那个返回值给步进电机来控制步进电机 的旋转角度,但是步进电机一直没反应啊,本来还转,一加AD就不转了是为什么啊??
求大佬们指点指点啊!!!
int main(void)
{
unsigned int s;
u16 adcx;
float temp;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÖD¶ÏóÅÏ輶·Ö×éÎa×é2£o2λÇàÕ¼óÅÏ輶£¬2λÏìó|óÅÏ輶
uart_init(115200); //′®¿ú3õê¼»ˉÎa115200
Adc_Init();
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
qudong(adcx);
}
int qudong(unsigned int b)
{
u32 speed=50;
u32 i=b;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //ê1ÄüPB,PE¶Ë¿úê±Öó
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_10|GPIO_Pin_11; //LED0-->PB.5 ¶Ë¿úÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //íÆíìêä3ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿úËù¶èÎa50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //3õê¼»ˉGPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_1); //PB.5 êä3ö¸ß
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LED1-->PE.5íÆíìêä3ö
GPIO_Init(GPIOB, &GPIO_InitStructure); //3õê¼»ˉGPIO
GPIO_SetBits(GPIOB,GPIO_Pin_0); //PE.5 êä3ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //3õê¼»ˉGPIO
GPIO_SetBits(GPIOB,GPIO_Pin_10);
GPIO_Init(GPIOA, &GPIO_InitStructure); //3õê¼»ˉGPIO
GPIO_SetBits(GPIOB,GPIO_Pin_11);
while(i--)
{
//GPIO_ResetBits(GPIOB,GPIO_Pin_0);
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
PBout(0)=1;
PBout(1)=0;
PBout(10)=0;
PBout(11)=0;
Delay(speed);
//GPIO_SetBits(GPIOB,GPIO_Pin_0);
//GPIO_ResetBits(GPIOB,GPIO_Pin_1);
PBout(0)=0;
PBout(1)=1;
PBout(10)=0;
PBout(11)=0;
Delay(speed);
PBout(0)=0;
PBout(1)=0;
PBout(10)=1;
PBout(11)=0;
Delay(speed);
PBout(0)=0;
PBout(1)=0;
PBout(10)=0;
PBout(11)=1;
Delay(speed);
}
PBout(0)=0;
PBout(1)=0;
PBout(10)=0;
PBout(11)=0;
Delay(speed);
i=b;
while(i--)
{
//GPIO_ResetBits(GPIOB,GPIO_Pin_0);
// GPIO_SetBits(GPIOB,GPIO_Pin_1);
PBout(0)=0;
PBout(1)=0;
PBout(10)=0;
PBout(11)=1;
Delay(speed);
//GPIO_SetBits(GPIOB,GPIO_Pin_0);
//GPIO_ResetBits(GPIOB,GPIO_Pin_1);
PBout(0)=0;
PBout(1)=0;
PBout(10)=1;
PBout(11)=0;
Delay(speed);
PBout(0)=0;
PBout(1)=1;
PBout(10)=0;
PBout(11)=0;
Delay(speed);
PBout(0)=1;
PBout(1)=0;
PBout(10)=0;
PBout(11)=0;
Delay(speed);
}
return 0;
}
|
最佳答案
查看完整内容[请看2#楼]
大佬!!那个问题已经弄好了,但是用电位器转换AD调节控制步进电机转动角度的时候不均匀是咋回事啊???就是有时轻轻转一下电位器步进电机就转好多,有时电位器转很多才转好小角度??求大佬指点啊!!!
|