int main(void)
{
unsigned char Temp[11];
u8 t;
RCC_Configuration(); // 初始化时钟
GPIO_Configuration(); // 初始化 IO 端口
delay_init(72); // 初始化延时函数
NVIC_Configuration(); // 中断优先级初始化
LED_Init(); // 初始化与 LED 连接的硬件接口
KEY_Init(); // 初始化与按键连接的硬件接口
LED0=1; // 点亮 LED
USART1_Config(); // 初始化 配置 USART1
USART2_Config(); // 初始化 配置 USART2 (用于接收 MPU6050 数据)
TIM3_PWM_Init(1000-1,719); // 1 分频 周期 1/72000 频率
TIM_SetCompare1(TIM3,200); // 设置占空比 20%GPIOC-> 6,7,8,9
TIM_SetCompare2(TIM3,0); // 设置占空比 40%
TIM_SetCompare3(TIM3,0); // 设置占空比 60%
TIM_SetCompare4(TIM3,0); // 设置占空比 80%
if(sign)
{
memcpy(Temp,Re_buf,11);
sign=0;
if(Re_buf[0]==0x55) // 检查帧头
{
switch(Re_buf[1])
{
case 0x51: // 标识这个包是加速度包
a[0] = ((short)(Temp[3]<<8 | Temp[2]))/32768.0*16; //X 轴加速度
a[1] = ((short)(Temp[5]<<8 | Temp[4]))/32768.0*16; //Y 轴加速度
a[2] = ((short)(Temp[7]<<8 | Temp[6]))/32768.0*16; //Z 轴加速度
T = ((short)(Temp[9]<<8 | Temp[8]))/340.0+36.25; // 温度
break;
case 0x52: // 标识这个包是角速度包
w[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*2000; //X 轴角速度
w[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*2000; //Y 轴角速度
w[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*2000; //Z 轴角速度
T = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25; // 温度
break;
case 0x53: // 标识这个包是角度包
angle[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*180; //X 轴滚转角
angle[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*180; //Y 轴俯仰角
angle[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*180; //Z 轴偏航角
T = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25; // 温度
break;
default: break;
}
}
}
if(mode==1)
{
if(angle[0]<10&&angle[0]>-10)
{
if((angle[0]<0&&w[0]<0)||(angle[0]>0&&w[0]>0))
{
TIM_SetCompare1(TIM3,0); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,1000); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4
}
else
{
if((angle[0]>0&&w[0]>0)||(angle[0]<0&&w[0]>0))
{
TIM_SetCompare1(TIM3,1000); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,0); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4
}
else
{
TIM_SetCompare1(TIM3,1000); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,1000); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4
}
}
}
else
{
TIM_SetCompare1(TIM3,1000); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,1000); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4
}
}
if(mode==2)
{
LED0=0;
if(KEY0==0)// 按键选择要摆动的直线长度
{
delay_ms(10);
if(KEY0==0) //key0 按一下直线长度加 10 默认是 30
{
length=length+10;
while(!KEY0);
}
} if(KEY1==0)
{
delay_ms(10);
if(KEY1==0)
{
length=length+10; //key0 按一下直线长度减 10 默认是 30
while(!KEY1);
}
} if(WK_UP==1)// 开始执行设定的值
{delay_ms(10);
if(WK_UP==1)
{ mode2=1;
while(WK_UP);
} }
if(mode2==1)
{ if(length==30)
jiao=jiao_du[0];
if(length==40)
jiao=jiao_du[1];
if(length==50)
jiao=jiao_du[2];
if(length==60)
jiao=jiao_du[3];
if(angle[0]<10&&angle[0]>-10)
{
if((angle[0]<0&&w[0]<0)||(angle[0]>0&&w[0]>0))
{
TIM_SetCompare1(TIM3,0); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,1000); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4
}
else
{
if((angle[0]>0&&w[0]>0)||(angle[0]<0&&w[0]>0))
{
TIM_SetCompare1(TIM3,1000); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,0); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4
} else {
TIM_SetCompare1(TIM3,1000); // 设置占空比 20% 风扇 1
TIM_SetCompare2(TIM3,1000); // 设置占空比 40% 风扇 2
TIM_SetCompare3(TIM3,1000); // 设置占空比 60% 风扇 3
TIM_SetCompare4(TIM3,1000); // 设置占空比 80% 风扇 4 }
}
|