小学生
最后登录1970-1-1
在线时间 小时
注册时间2023-8-16
|
在做循迹小车项目中,使用tb6612驱动直流电机时,使用resetbits和setbits函数能使左轮正向转,但是切换到反转(相对正转)的代码时,电机不转,没反应,而右轮的电机正反转都能行;
因为要先测试电机的正反转功能所以没有调用pwm的代码,左右轮电机对应的pwm_a,pwm_b(PB6,PB7)接口都设置为了高电平,6个gpio都设置为了普通的推挽输出模式;
下载了商家的代码,左轮是可以实现正反转的,但是商家的代码是利用位带操作来输出高低电平的,我使用的是固件库,本来想试试寄存器输出高低电平的代码,但是不会写,感觉本质上和标准库的一样,
求各位大佬指点指点,不清楚是那里的问题,在这里卡了好久,难受。
- [code]
- #include "stm32f10x.h" //相当于51中的 #include <reg51.h>
- #include "Car_action.h"
- int main(void)
- {
- Car_Init();
- GPIO_ResetBits(GPIOB,GPIO_Pin_4);
- GPIO_ResetBits(GPIOB,GPIO_Pin_5);
- GPIO_ResetBits(GPIOB,GPIO_Pin_6);
- GPIO_ResetBits(GPIOB,GPIO_Pin_7);
- GPIO_ResetBits(GPIOB,GPIO_Pin_8);
- GPIO_ResetBits(GPIOB,GPIO_Pin_9);
- while(1)
- {
- //前三行没作用,本该是左轮后转的
- // GPIO_SetBits(GPIOB,GPIO_Pin_6);
- // GPIO_SetBits(GPIOB,GPIO_Pin_5);
- // GPIO_ResetBits(GPIOB,GPIO_Pin_4);
-
- //换成该函数依旧行不通
- // GPIO_WriteBit(GPIOB,GPIO_Pin_6,Bit_SET);
- // GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_SET);
- // GPIO_WriteBit(GPIOB,GPIO_Pin_4,Bit_RESET);
-
- //左轮前转
- // GPIO_SetBits(GPIOB,GPIO_Pin_6);
- // GPIO_SetBits(GPIOB,GPIO_Pin_4);
- // GPIO_ResetBits(GPIOB,GPIO_Pin_5);
-
- //右轮后转
- // GPIO_SetBits(GPIOB,GPIO_Pin_7);
- // GPIO_SetBits(GPIOB,GPIO_Pin_8);
- // GPIO_ResetBits(GPIOB,GPIO_Pin_9);
-
- //右轮前转
- GPIO_SetBits(GPIOB,GPIO_Pin_7);
- GPIO_SetBits(GPIOB,GPIO_Pin_9);
- GPIO_ResetBits(GPIOB,GPIO_Pin_8);
- }
- }
复制代码 [/code]
|
|