Esempio n. 1
0
int main(){
    Init_UART();
    Init_BT();
    Init_Default_Led();
    Init_WU();

    SystemInit();
    if(SysTick_Config(SystemCoreClock / 1000)){
       while(1);
    }

    char str[256];
    sprintf(str,"\n\nFlash Size : %dKb\nUID : %X%X%X\n",*(volatile u16*)(0x1FFFF7E0),
   *(volatile u32*)(0x1FFFF7E8),*(volatile u32*)(0x1FFFF7EC),*(volatile u32*)(0x1FFFF7F0));
    USART1_Send_Sting(str);
    BT_Send_String(str);

    while(1){
       GPIO_SetBits(GPIOC,GPIO_Pin_13);
       Delay(1000);
       GPIO_ResetBits(GPIOC,GPIO_Pin_13);

       PWR_StandbyMode();
    }
}
Esempio n. 2
0
void Get_Data_Send(void)
{
	// 获取手柄数据
	Get_PS_Data();
	
	// 判断手柄处于哪种模式
	switch(CONL.PS->PS_Data[0])
	{
		// 数字模式
		case Digital_Mode:
			PS_Digital_Mode();
			// 判断数据是否有效(有按键按下),当FF_Flag=1时也会进,
			// 目的是为了在按键松开后多发送几次停止数据,防止底盘漏接收帧
			if(FF_Flag||(CONL.PS->PS_Data[2] != 0xff)||(CONL.PS->PS_Data[3] != 0xff))
			{
				// 发送有效数据
				BT_Send_String(CONL.PS->PS_Data,1);// 包头
				BT_Send_String(CONL.PS->PS_Data+2,2);// 有效数据
				// 发送包尾
				BT_Send_String(head_end,1);
				
				// count用于发送停止数据计数,FF_Flag为标志位
				if((count < 10)&&(CONL.PS->PS_Data[2] == 0xff)\
					&&(CONL.PS->PS_Data[3] == 0xff))//没有有效数据,清标志位
				{
					count++;
					if(count >= 10)
						FF_Flag = 0;
				}
				else
				{
					FF_Flag = 1;
					count = 0;
				}
			}
			break;
		// 模拟模式,与数字模式类似,不在赘述
		case Analog_Red:
			PS_Analog_Red();
			
			if(((CONL.PS->PS_Data[3] & R1) != 0))
			{
				if(FF_Flag||(CONL.PS->PS_Data[2] != 0xff)||\
				   (CONL.PS->PS_Data[3] != 0xff))// 有有效数据
				{
					BT_Send_String(A2D,1);
					BT_Send_String(CONL.PS->PS_Data+2,2);
					BT_Send_String(head_end,1);
					if((count < 10)&&(CONL.PS->PS_Data[2] == 0xff)\
						&&(CONL.PS->PS_Data[3] == 0xff))
					{
						count++;
						if(count >= 10)
							FF_Flag = 0;
					}
					else
					{
						FF_Flag = 1;
						count = 0;
					}
				}
			}
			else
			{
				BT_Send_String(CONL.PS->PS_Data,1);
				BT_Send_String(CONL.PS->PS_Data+2,6);
				BT_Send_String(head_end,1);
			}
			break;
		default:
		break;
	}
}