大家看看我代码
#include <ioCC2530.h>
#define IN1 P1_0
#define IN2 P1_1
#define IN3 P0_6
#define IN4 P0_7
void up (void) {IN1=IN3=0;IN2=IN4=1;} //小车向前
void down (void) {IN1=IN3=1;IN2=IN4=0;} //小车向后
void stop (void) {IN1=IN2=IN3=IN4=0;} //小车停止
void turn_right (void) {IN1=IN4=0;IN2=IN3=1;} //小车原地向右
void turn_left (void) {IN1=IN4=1;IN2=IN3=0;} //小车原地向左
void initUARTtest()
{
CLKCONCMD &= ~0x40;//设置时钟晶振为32MHZ
while(!(SLEEPSTA & (1<<6))); /*等待晶振稳定*/
CLKCONCMD &= ~0x07;/*时钟不分频*/
PERCFG = 0x00;//使用备用位置1 P0口
P0SEL = 0x0C;//P0用作外设:串口?
P2DIR &= ~0XC0; //串口0优先级最高?
U0CSR |= 0xC0; //UART方式
U0GCR = 8;
U0BAUD |=59; //设置波特率9600
UTX0IF = 0; //串口0发送中断标志清零?
URX0IE=1;
}
void PortInit()
{
P1DIR |=(1<<0); //P1_2为输出
P1DIR |=(1<<1); //P1_3为输出
P0DIR |=(1<<6); //P1_6为输出
P0DIR |=(1<<7); //P1_7为输出
P1SEL &=~(1<<0); //p1_2为普通io
P1SEL &=~(1<<1); //p1_3为普通io
P0SEL &=~(1<<6); //p1_6为普通io
P0SEL &=~(1<<7); //p1_7为普通io
}
char uart0_receive_byte(void) //接受蓝牙指令
{
while(URX0IF == 0);
URX0IF = 0;
return U0DBUF;
}
void main()
{
initUARTtest();
PortInit();
while(1)
{
char buf=u art0_receive_byte();
switch(buf)
{
case 'A':
up();
break;
case 'B':
down();
break;
case 'C':
turn_left();
break;
case 'D':
turn_right();
break;
case 'E':
stop();
break;
}
}
}
我不知道哪里有问题,供电用的是充电宝,我的蓝牙的代码应该是没问题,用手机可以控制LED灯,但是就是控制不了小车动。我试了直接写小车动的代码,没写蓝牙的代码进去,小车可以动,那说明H桥没问题。我搞了一个下午还是搞不动小车。