void SYS_INIT(void) { LED_INIT(); LED_FLASH(); Moto_Init(); LED_FLASH(); Tim3_Init(500); Nvic_Init(); Uart1_Init(115200); ANO_TC_I2C2_INIT(0xA6,400000,1,1,3,3); MPU6050_Init(); Spi1_Init(); Nrf24l01_Init(MODEL_TX2,40); if(Nrf24l01_Check()) Uart1_Put_String("NRF24L01 IS OK !\r\n"); else Uart1_Put_String("NRF24L01 IS NOT OK !\r\n"); ADC1_Init(); FLASH_Unlock(); EE_INIT(); EE_READ_ACC_OFFSET(); EE_READ_GYRO_OFFSET(); EE_READ_PID(); Tim3_Control(1); }
/******************Ö÷³ÌÐò********************************/ void main(void) { Pin_Init(); T0_Init(); Uart1_Init(); Uart2_Init(); Uart1_AppInit(); Uart2_AppInit(); MdTcbInit1(); MdTcbInit2(); Global_EI(); while (1) { TimeDeal(&Ahu1); MdPoll01(); MdPoll02(); if (Ahu1.Times.Solo._1msFlag) { UartTimeOut(&UartAppData1); UartTimeOut(&UartAppData2); KeyScanDeal(KeyGet()); KeyAllStateDeal(&Ahu1); NumberDisplayScan(&Ahu1); } DisplayNumber(flag); if (Ahu1.Times.Solo._5msFlag) { LedOutputScan(&Ahu1); RhDisplayScan(&Ahu1); TmepDisplayScan(&Ahu1); } if (Ahu1.Times.Solo._10msFlag) { } if (Ahu1.Times.Solo._1000msFlag) { flag++; } // Ahu1.Humidity.Solo.SEG_B = 1; // Ahu1.Temperature.Solo.SEG_C = 1; Ahu1.Times.All[0] = 0; } }
//*********************************************************** void GsmSerialInit(const int BaudRate) { switch (BaudRate) { //the compiler demands that the value be constant in the function call... case 2400:Uart1_Init(2400);break; case 4800:Uart1_Init(4800);break; case 9600:Uart1_Init(9600);break; case 19200:Uart1_Init(19200);break; case 38400:Uart1_Init(38400);break; case 57600:Uart1_Init(57600);break; } }//GsmSerialInit
void ANO_Remoter_board_Init(void) { u8 data[32]={0};u8 ack[32]={0}; //中断优先级组别设置 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //初始化系统滴答定时器 SysTick_Config(SystemCoreClock / 1000); LED_INIT(); //初始化模拟I2C ANO_I2C_Soft::Init(); //初始化串口1 Uart1_Init(115200); //初始化SPI2 ANO_SPI2::Init(); while(nrf.Check()==false); //初始化NRF nrf.Init(MODEL_RX2,40); //while(1) //{ // //memset(data,0,sizeof(data)); // data[0]=0x31;data[1]=0x32;data[2]=0x33; // nrf.NRF_Tx_Dat(data,ack); // nrf.delayms(50); //} //初始化ADC采样 ADC1_Init(); //解锁flash FLASH_Unlock(); //初始化虚拟eeprom设置 EE_Init(); }
void main(void) { /*设置红外输出引脚为推挽输出*/ P1M1 = 0x00; P1M0 = 0x1C; /*PCA模块初始化*/ PCA_Init(); /*Timer定时器初始化*/ Timer0_Init(); /*串口初始化*/ Uart1_Init(); /*ADC的初始化*/ ADC_Init(); /*打开全局中断标识位*/ EA = 1; /*系统上电,管脚初始化*/ Signal_LED_PIN = 0; Check_Signal_PIN = 0; // #ifdef DEBUG // /*启动32HZ和38KHZ方波输出*/ // T38KHZ_Start(); // T32HZ_Start(); // Timer = 0; // // System_State = 1; // #endif /*输出初始化成功标识*/ printf("%s","INIT DONE \r\n"); while(1) { /*软件复位,不断电,自动下载*/ if(System_IAP_REST_PIN == 0) IAP_CONTR = 0x60; /***************************检查系统电极接触状态******************************/ if(ADC_Timer == 198) { ADC_Buffer = Get_ADC_Result(); printf("%d ",ADC_Buffer); /*清除系统状态*/ System_State = 0; if((ADC_Buffer > 140) && (ADC_Buffer <250)) { /*电极接触*/ System_State = 1; } if(System_State != System_State_Buffer) { if(System_State == 0) { T32HZ_Stop(); T38KHZ_Start(); } else if(System_State == 1) { T38KHZ_Stop(); T32HZ_Start(); } } System_State_Buffer = System_State; printf("%d ",System_State_Buffer); } else if(ADC_Timer == 200) { ADC_Timer = 0; } /*****************************************************************************/ /************************系统状态为充电电极未接触状态*************************/ if(System_State == 0) { /*****************************指示灯部分代码程序******************************/ /*未接触时,指示灯4S亮一次*/ if(Signal_LED_PIN_Timer < 50) { Signal_LED_PIN = 1; } else if(Signal_LED_PIN_Timer >= 3999) { Signal_LED_PIN_Timer = 0; Signal_LED_PIN = 0; } else { Signal_LED_PIN = 0; } /*****************************************************************************/ /****************************红外发射部分代码程序*****************************/ if((IR_Timer >= 0) && (IR_Timer < 50)) { /*全向红外发射序列*/ /*1*/ if((IR_Timer >= 0) && (IR_Timer < 3)) { LED_FF_PIN = 1; } else if(IR_Timer == 3) { LED_FF_PIN = 0; } /*0*/ else if(IR_Timer == 4) { LED_FF_PIN = 1; } else if((IR_Timer >= 5) && (IR_Timer < 7)) { LED_FF_PIN = 0; } /*0*/ else if(IR_Timer == 7) { LED_FF_PIN = 1; } else if((IR_Timer >= 8) && (IR_Timer < 10)) { LED_FF_PIN = 0; } /*1*/ else if((IR_Timer >= 10) && (IR_Timer < 13)) { LED_FF_PIN = 1; } else if(IR_Timer == 13) { LED_FF_PIN = 0; } /*0*/ else if(IR_Timer == 14) { LED_FF_PIN = 1; } else if((IR_Timer >= 15) && (IR_Timer < 17)) { LED_FF_PIN = 0; } /*1*/ else if((IR_Timer >= 17) && (IR_Timer < 20)) { LED_FF_PIN = 1; } else if(IR_Timer == 20) { LED_FF_PIN = 0; } /*0*/ else if(IR_Timer == 21) { LED_FF_PIN = 1; } else if((IR_Timer >= 22) && (IR_Timer < 24)) { LED_FF_PIN = 0; } /*1*/ else if((IR_Timer >= 24) && (IR_Timer < 27)) { LED_FF_PIN = 1; } else { LED_FF_PIN = 0; } } else if((IR_Timer >= 50) && (IR_Timer < 100)) { /*左右侧红外发送序列*/ /*L:0 R:0*/ if(IR_Timer == 50) { LED_L_PIN = 1; LED_R_PIN = 1; } else if((IR_Timer >= 51) && (IR_Timer < 53)) { LED_L_PIN = 0; LED_R_PIN = 0; } /*L:0 R:0*/ else if(IR_Timer == 53) { LED_L_PIN = 1; LED_R_PIN = 1; } else if((IR_Timer >= 54) && (IR_Timer < 56)) { LED_L_PIN = 0; LED_R_PIN = 0; } /*L:1 R:0*/ /*L:0 R:1*/ else if(IR_Timer == 56) { LED_L_PIN = 1; LED_R_PIN = 1; } else if((IR_Timer >= 57) && (IR_Timer < 59)) { LED_L_PIN = 1; LED_R_PIN = 0; } else if(IR_Timer == 59) { LED_L_PIN = 0; LED_R_PIN = 1; } else if(IR_Timer == 60) { LED_L_PIN = 1; LED_R_PIN = 1; } else if(IR_Timer == 61) { LED_L_PIN = 0; LED_R_PIN = 1; } else if(IR_Timer == 62) { LED_L_PIN = 0; LED_R_PIN = 0; } /*L:0 R:0*/ else if(IR_Timer == 63) { LED_L_PIN = 1; LED_R_PIN = 1; } else if((IR_Timer >= 64) && (IR_Timer < 66)) { LED_L_PIN = 0; LED_R_PIN = 0; } /*L:1 R:1*/ else if((IR_Timer >= 66) && (IR_Timer < 69)) { LED_L_PIN = 1; LED_R_PIN = 1; } else if(IR_Timer == 69) { LED_L_PIN = 0; LED_R_PIN = 0; } /*L:0 R:0*/ else if(IR_Timer == 70) { LED_L_PIN = 1; LED_R_PIN = 1; } else if((IR_Timer >= 71) && (IR_Timer < 73)) { LED_L_PIN = 0; LED_R_PIN = 0; } /*L:1 R:1*/ else if((IR_Timer >= 73) && (IR_Timer < 76)) { LED_L_PIN = 1; LED_R_PIN = 1; } else { LED_L_PIN = 0; LED_R_PIN = 0; } } else if((IR_Timer >= 100)) { IR_Timer = 0; LED_FF_PIN = 0; LED_L_PIN = 0; LED_R_PIN = 0; } /*****************************************************************************/ } /**************************统状态为充电电极接触状态***************************/ else if(System_State == 1) { /*****************************指示灯部分代码程序******************************/ /*接触时,指示灯常量*/ Signal_LED_PIN = 1; Signal_LED_PIN_Timer = 0; /*****************************************************************************/ /************************发射检测信号部分代码程序*****************************/ if(Check_Signal_Timer < 190) { Check_Signal_PIN = 1; } else if((Check_Signal_Timer >= 197) && (Check_Signal_Timer < 200 )) { Check_Signal_PIN = 0; } else if(Check_Signal_Timer >= 200) { Check_Signal_Timer = 0; Check_Signal_PIN = 1; } /*****************************************************************************/ } } }
/* *@功能 主函数入口 *@参数 空 *@返回 空 */ int main(void) { /*测试变量部分*/ /*******************************************/ uint8_t t=' '; uint8_t usb_code[6]={0x55,0x7A,0xBB,0x01,0x00,0x01};//下位机反复的向上位机发送此命令,用以建立初始化连接 uint8_t p[6]={0x30,0x31,0x32,0x33,0x34,0x35}; uint8_t hanzi[11]; uint8_t *phz; uint32_t flash_data; uint8_t flash_temp[4]; uint8_t status; uint32_t addr; uint8_t nChar; // uint8_t char_buf[50]; // uint8_t count; uint32_t batt_test=0; /*********************************************/ //设置中断向量表的位置在 0x5000,即内部flash的前20K NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x5000); SystemTick_Init(); NVIC_Configuration(); //按键初始化 Init_Sw_Key_Io(); Exit_Line_Init(); EXTILine_Mask(EXTI_Line5); EXTILine_Mask(EXTI_Line8); EXTILine_Mask(EXTI_Line15); //长按开机,如果长按不够3m则继续保持关机状态,如果长按3m,则退出停机模式,开机 WKUP_Init(); EXTILine_Unmask(EXTI_Line5); EXTILine_Unmask(EXTI_Line8); EXTILine_Unmask(EXTI_Line15); //如果没有进入停机模式,则开启显示 OLED_WR_Byte(0xAF,OLED_CMD); //开启显示 longpress=0; stop_flag=0; SPI_FLASH_Init(); //正常运行后,显示logo OLED_Init(); SPI_FLASH_Init(); OLED_Clear(); OLED_DrawBMP(32,2,48,4,hui); OLED_ShowUnite(48,2,"合科技"); //delay_ms(800); USB_BIT_Init(); //为降低功耗的控制位 /****************************************/ bluetooth_control_Init(); max232_control_Init(); oled_control_Init(); OLED_ON; buzzer_control_Init(); BUZZER_OFF; coil_control_Init(); COIL_NO_ACTUATE; /****************************************/ Init_Timer(); //实时时钟初始化 RTC_init(); //初始化并启动看门狗 //iwdg_init(); //串口1 USB初始化及配置 Uart1_Init(); USART1_Configuration(); //串口2 RFID初始化及配置 Uart2_Init(); USART2_Configuration(); //串口3 bluetooth初始化及配置 Uart3_Init(); USART3_Configuration(); bluetooth_Configuration(); //蓝牙的EN和BRST配置 CLR_BT_EN; //开启蓝牙 ADC_GPIO_Configuration(); ADC_Configuration(); //flash区域指针初始化 //SPI_FLASH_WriteWord(INIT_FLAG,1); //此次下载清flash SPI_FLASH_WriteWord(INIT_FLAG,0); //此次下载不清flash if(SPI_FLASH_ReadWord(INIT_FLAG) ==0x01) //当初始化标志等于1,就初始化POINT和ROW { mykey_init(); //初始化钥匙操作的头指针 ---如何设定在什么情况下重新设置 } // OLED_ClearArea(0,4,128,6); // OLED_ShowUnite(24,4,"初始化蓝牙"); // mac_query_result=bluetooth_mac(); /*延时函数测试*/ /**********************************************/ // GPIO_Configuration(); // while(1) // { // GPIO_SetBits(GPIOB,GPIO_Pin_0); // delay_ms(1000); // GPIO_ResetBits(GPIOB,GPIO_Pin_0); // delay_ms(3000); // } /**********************************************/ /*OLED测试*/ /**********************************************/ // while(1) // { // OLED_Clear(); // OLED_ShowChinese(0,0,0); //中 // OLED_ShowChinese(18,0,1); //景 // OLED_ShowChinese(36,0,2); //园 // OLED_ShowChinese(54,0,3); //电 // OLED_ShowChinese(72,0,4); //子 // OLED_ShowChinese(90,0,5); //科 // OLED_ShowChinese(108,0,6);//技 // OLED_ShowString(0,3,"1.3' OLED TEST"); // //OLED_ShowString(8,2,"ZHONGJINGYUAN"); // //OLED_ShowString(20,4,"2014/05/01"); // OLED_ShowString(0,6,"ASCII:"); // OLED_ShowString(63,6,"CODE:"); // OLED_ShowChar(48,6,t);//显示ASCII字符 // t++; // if(t>'~') // t=' '; // OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值 // // delay_ms(8000); // //OLED_Clear(); // // OLED_DrawBMP(0,0,128,8,BMP1); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用) // delay_ms(800); // // //OLED_Display_On(); // //delay_ms(800); // // OLED_DrawBMP(0,0,128,8,BMP2); // delay_ms(800); // // //OLED_Display_Off(); // //delay_ms(800); // } /**********************************************/ /*OLED+字库测试*/ /**********************************************/ // phz="字库"; // hanzi[0]=*phz; // hanzi[1]=*(phz+1); // hanzi[2]=*(phz+2); // hanzi[3]=*(phz+3); // hanzi[4]=*(phz+4); // // // OLED_ShowChinese(0,0,"汉"); // OLED_ShowChinese(16,0,"字"); // // OLED_ShowUnite(0,2,"你很不错"); // OLED_ShowUnite(0,4,"ABCDEF"); // OLED_ShowUnite(0,6,"123456"); /**********************************************/ /* STM32F103C8串口有3个 串口1通过USB接充电器,与上位机PC通信 串口2通过串口读RFID的数据 串口3通过蓝牙与PDA通信 */ /*串口1 USB测试*/ /**********************************************/ // while(1) // { // UART1nSendChar(1,"12345",5); // delay_ms(1000); // } //UART1nSendChar(1,usb_code,6); //USB_Cheak_init(); //Test_Usb_Data(); // UART1SendwordHex(1, 0x123456); // UART1nSendChar(1,"汉字",5); // while(1); /**********************************************/ /*串口2 RFID测试*/ /**********************************************/ // while(1) // { // OLED_ShowUnite(32,2,"RFID"); // delay_ms(1000); // UART1nSendChar(1,"12345",5); // //OLED_Clear(); //清屏 // nChar =Read_RfidData(2,Rfid_Buff,0xff); // m_UB2; // if(nChar ==5) // { // if(Rfid_Buff[0]==0&&Rfid_Buff[1]==0&&Rfid_Buff[2]==0&&Rfid_Buff[3]==0) // ; // else //至少有一个不为零 // { // UART1nSendChar(1,Rfid_Buff,5); // OLED_ShowNumHex(32,4,Rfid_Buff[0],2,16); // OLED_ShowNumHex(48,4,Rfid_Buff[1],2,16); // OLED_ShowNumHex(64,4,Rfid_Buff[2],2,16); // OLED_ShowNumHex(80,4,Rfid_Buff[3],2,16); // delay_ms(1000); // break; // } // } // } // while(1); /**********************************************/ /*串口3 bluetooth测试*/ /**********************************************/ // CLR_BT_EN; // CLR_BT_BRTS; // // while(1) // { // UART3nSendChar(3,"012345",6); // delay_ms(1000); // } // while(1) // { // UART3nSendChar(3,"TTM:MAC-?",9); // count=UART3GetCount(3); // UART3nReadChar(3,char_buf,count); // // // // // UART1nSendChar(1,char_buf,count); // delay_ms(1000); // } /**********************************************/ /*flash测试*/ /**********************************************/ // SPI_FLASH_WriteWord(AUTHOR_ROW,0x456789); // // SPI_FLASH_BufferRead(flash_temp,AUTHOR_ROW,4); // // flash_data=SPI_FLASH_ReadWord(AUTHOR_ROW); // UART1nSendChar(1,flash_temp,4); // // OLED_ShowNum(0,6,flash_data,8,16); // // //SPI_FLASH_WriteEnable(); // status=SPI_FLASH_ReadStatusReg(); // OLED_ShowNum(112,6,status,1,16); // SPI_FLASH_BulkErase(); // SPI_FLASH_BufferWrite("98765",0x100002,6); // SPI_FLASH_BufferRead(p,0x100002,6); // SPI_FLASH_Write("98765",0x1f0005,6); // SPI_FLASH_Read(p,0x1f0005,6); // while(1) // { // UART1nSendChar(1,p,6); // delay_ms(1000); // } /**********************************************/ //菜单测试 /**********************************************/ //Main_Lcd_Show(); //主界面显示 //Main_Lcd_Show2(); // mode=1; // // OLED_ShowChar(0,0,'A'); // // OLED_ShowChinese(0,2,"我"); // // OLED_ShowUnite(0,4,"你很不错"); // // while(1); // // mode=0; // delay_ms(1000); //ShowMenu(HsMenu); // Choose_MenuOp1(); // Choose_MenuOp4(); // Choose_MenuOp4_1(); // Choose_MenuOp4_2(); // Choose_MenuOp4_22(); // Choose_MenuOp4_3(); // Choose_MenuOp4_4(); // Choose_MenuOp5(); // Choose_MenuOp5_1(); // Choose_MenuOp5_3(); // Choose_MenuOp5_4(); // while(1) // { // Main_Oled_Time(); // Main_Oled_Power(); // delay_ms(1000); // } // while(1); /**********************************************/ //蜂鸣器测试 /**********************************************/ // while(1) // { // BUZZER_OFF; // delay_ms(1000); // // BUZZER_ON; // delay_ms(1500); // } /**********************************************/ //协议测试 /**********************************************/ //OLED_Clear(); // OLED_ShowUnite(32,2,"通信中.."); // OLED_ShowUnite(0,4,"你很不错"); // delay_ms(1000); // addr=0xFFFF; // OLED_ShowNumHex(0,6,addr,8,16); //USB_Cheak_init(); //USB_transmit(); // bluetooth_uart_switch=1; // Test_Usb_Data(); // while(1); // SPI_FLASH_WriteWord(AUTHOR_POINT,AUTHOR_START); // addr= SPI_FLASH_ReadWord(AUTHOR_POINT); // OLED_ShowNum(0,0,addr,8,16); /**********************************************/ //ADC测试 /**********************************************/ // while(1) // { // OLED_Clear(); // batt_test=ADC_GetConversionValue(ADC1); // OLED_ShowNum(24,2,batt_test,8,16); // delay_ms(1000); // } // /**********************************************/ //定时器2测试 /**********************************************/ // GPIO_Configuration(); // GPIO_ResetBits(GPIOB,GPIO_Pin_6); // delay_ms(10); // GPIO_SetBits(GPIOB,GPIO_Pin_6); // g_WaitTimeOut = 0; // SetTimer(TIMER_TIMEOUT,1,Do_TimeOut,THREE_MIN); // while(g_WaitTimeOut == 0) // { // GPIO_ResetBits(GPIOB,GPIO_Pin_6); // } // KillTimer(TIMER_TIMEOUT); // GPIO_SetBits(GPIOB,GPIO_Pin_6); // g_WaitTimeOut = 0; // SetTimer(TIMER_TIMEOUT,10,Do_TimeOut,THREE_MIN); // while(g_WaitTimeOut == 0) // { // nChar =Read_RfidData(2,Rfid_Buff,0xff); // if(nChar ==5) // { // OLED_ShowUnite(32,80,Rfid_Buff); // ++rfidrow; // delay_ms(1000); // for(i=0;i<4;i++) // { // for(k =0;k<40;k++) // msDelay(500); // WritEDAta(CAIMA_START+8*rfidrow+4+i,Rfid_Buff[i]); // } // break; // } // } // KillTimer(TIMER_TIMEOUT); /**********************************************/ // OLED_ClearArea(0,4,128,6); // OLED_ShowUnite(24,4,"初始化完成"); // delay_ms(100); //bluetooth_uart_switch=0; // for(int iter=0;iter<3;iter++) // Power_Cheak(); //主循环测试 g_State=ST_IDLE; while(1) { switch (g_State) //g_State是一个全局函数 { case ST_IDLE: //#define ST_IDLE 0XFF ST_Idle(); //空闲时做状态检测,可改变g_State break; case ST_USB: //#define ST_USB 0XFD USB_transmit(); //USB传输 break; // case ST_KEY: // Key_Trismit(); //读钥匙的RFID,判断是否已经连接上 // break; case ST_LCDMENU: //#define ST_LCDMENU 0XFA 多选择菜单操作 Choose_MenuOp1(); break; default:break; } } }