#include "devicegpioinit.h" #include "project_test.h" #include "gpio.h" #include "FM33A0XXEV.h" #include "1gprs.h" #include "power_manage.h" #include "rtc.h" #include "upper_computer.h" #include "ir_nec.h" #include "gprs_module_api.h" #include "1lcd_new.h" volatile uint32_t msTicks = 0; volatile uint32_t get_time = 0; volatile uint32_t delay_time = 0; volatile uint32_t delay_time1 = 0; volatile uint32_t delay_time2 = 0; // int low_push_flag = 0; // int alka_lose_flag = 0; // int lith_lose_flag = 0; RS485_MODULE_PARA_T rs485_modeule_pagra; uint32_t Sys_GetTick(void) { return msTicks; } void delay(unsigned int ms) // ·Ç×èÈû { clock_t start_time = Sys_GetTick(); // ¼Ç¼Æðʼʱ¼ä while (Sys_GetTick() < start_time + ms) ; // Ñ­»·µÈ´ý } void AppNvr_Print(void) { CMU_ClocksType CMU_Clocks; CMU_GetClocksFreq(&CMU_Clocks); printf("/**************************************************/\r\n"); printf("/applicationVersion start/\r\n"); printf("Build Date = %s %s\r\n", __DATE__, __TIME__); printf("System Clock Frequency: %lu Hz\n", CMU_Clocks.SYSCLK_Frequency); printf("/**************************************************/\r\n"); printf("\r\n"); } int fputc(int ch, FILE *f) { UARTx_TXBUF_Write(UART5, (uint8_t)ch); // ·¢ËÍ´®¿Ú while (RESET == UARTx_ISR_TXSE_Chk(UART5)) ; // µÈ´ý·¢ËÍÍê³É return ch; } void Timer_Init(uint32_t psc, uint32_t arr_value) { CMU_PERCLK_SetableEx(BSTIMCLK, ENABLE); // ÍâÉè×ÜÏßʱÖÓʹÄÜ CMU_OPCCR2_BSTCKS_Set(CMU_OPCCR2_BSTCKS_SYSCLK); // Ñ¡Ôñ¹¤×÷ʱÖÓÔ´ CMU_OPCCR2_BSTCKE_Setable(ENABLE); // ¹¤×÷ʱÖÓԴʹÄÜ BSTIM_CR1_ARPE_Setable(ENABLE); // Ô¤×°ÔØÊ¹ÄÜ // BSTIM_CR1_OPM_Set(BSTIM_CR1_OPM_STOP); //Update Event·¢Éúʱ¼ÆÊýÆ÷Í£Ö¹£¨×Ô¶¯ÇåÁãCEN£© BSTIM_CR1_OPM_Set(BSTIM_CR1_OPM_CONTINUE); // UE²úÉúʱ¼ÆÊýÆ÷²»Í£Ö¹ BSTIM_PSCR_Write(psc - 1); BSTIM_ARR_Write(arr_value - 1); NVIC_DisableIRQ(BSTIM_IRQn); NVIC_SetPriority(BSTIM_IRQn, 1); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(BSTIM_IRQn); /*½â¾ö¿ªÆô¶¨Ê±Æ÷»áÖ±½Ó½øÈëÒ»´ÎÖжϵÄÎÊÌâ*/ BSTIM_IER_UIE_Setable(ENABLE); // UpdateÖжÏʹÄÜ BSTIM_CR1_CEN_Setable(ENABLE); // ¼ÆÊýÆ÷ʹÄÜ BSTIM_ISR_UIF_Clr(); } void Iic_Init_Test(void) { CMU_PERCLK_SetableEx(PADCLK, ENABLE); OutputIO(LCD_SDA_PIN_GROUP, LCD_SDA_PIN_NUM, OUT_PUSHPULL); // Òº¾§Çý¶¯IIC pd3 OutputIO(LCD_SCL_PIN_GROUP, LCD_SCL_PIN_NUM, OUT_PUSHPULL); // pd2 } void ALL_ADC_Init_Test(void) { CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý AnalogIO_H(GPIO_Pin_1); // ¼îµçµçѹ²É¼¯ PH1 AnalogIO(GPIOF, GPIO_Pin_6); // ﮵çµçѹ²É¼¯ GPIOx_ANEN_Setable(GPIOF, GPIO_Pin_6, ENABLE); } void UART_Init_test(void) { UART_SInitTypeDef UART_para; // UART³õʼ»¯½á¹¹Ìå CMU_ClocksType CMU_Clocks; // ϵͳ¸÷ʱÖÓÆµÂʽṹÌå ÔÚ´ËÓë¼ÆËã²¨ÌØÂÊÓÐ¹Ø DMA_InitTypeDef DMA_InitStructure; // DMA³õʼ»¯²ÎÊý½á¹¹Ìå /*UART5 IO ÅäÖÃ*/ CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý AltFunIO(GPIOA, GPIO_Pin_8, ALTFUN_NORMAL); // ÉÏλ»úRS485¿ÚµÄÊý¾Ý½ÓÊÕ¡£¸Ã½Ó¿ÚÔÚÍ⹩µçʱ²ÅÓÐЧ¡£ AltFunIO(GPIOA, GPIO_Pin_9, ALTFUN_NORMAL); // ÉÏλ»úRS485¿ÚµÄÊý¾Ý·¢ËÍ OutputIO(GPIOA, GPIO_Pin_10, OUT_PUSHPULL); // UART1_RE ÉÏλ»úRS485¿ÚµÄÊÕ·¢¿ØÖÆ£¨¸ß·¢µÍÊÕ£© UART5_RE_ON; UART_para.BaudRate = 115200; UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý UART_para.ParityBit = NONE; // ÆæÅ¼Ð£Ñé UART_para.StopBit = OneBit; // ֹͣλ CMU_GetClocksFreq(&CMU_Clocks); // »ñȡϵͳ¸÷ʱÖÓÆµÂÊ UART_SInit(UART5, &UART_para, &CMU_Clocks); // ³õʼ»¯uart NVIC_DisableIRQ(UART5_IRQn); UARTx_CSR_RXEN_Setable(UART5, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ UARTx_CSR_TXEN_Setable(UART5, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ UARTx_ISR_RXBF_Clr(UART5); CMU_PERCLK_SetableEx(DMACLK, ENABLE); // DMAʱÖÓʹÄÜ DMA_GCR_DMAEN_Setable(ENABLE); // DMA×ÜʹÄÜ DMA_InitStructure.CHx = DMA_CH5; // DMAͨµÀºÅÉèÖà DMA_InitStructure.CHxPRI = DMA_CHxCR_CHxPRI_HIGH; // ͨµÀÓÅÏȼ¶ÉèÖà DMA_InitStructure.CHxINC = DMA_CHxCR_CHxINC_INCREASE; // ͨµÀµØÖ·Ôö³¤·½Ïò DMA_InitStructure.CHxSSEL = DMA_CHxCR_CH5SSEL_UART5_RX; // ÍâÉèͨµÀÑ¡Ôñ DMA_InitStructure.CHxDIR = DMA_CHxCR_DIR_TO_RAM; // Êý¾Ý´«Êä·½ÏòÉèÖà DMA_InitStructure.CHxTSIZE = UC_RECV_LEN_MAX - 1; // ͨµÀ´«Ê䳤¶È DMA_InitStructure.CHxRAMAD = (uint32)uc_recv_para_g.uc_recv_buf_union.uc_recv_buf; // Ä¿±êµØÖ· DMA_InitStructure.CHxBDW = DMA_CHxCR_BDW_8BITS; // ͨµÀ´«Êä´ø¿í DMA_InitStructure.CHxFTIE = DISABLE; // ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ DMA_InitStructure.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ NVIC_DisableIRQ(DMA_IRQn); DMA_ISR_DMACHFT_Clr(DMA_CH5); DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë #ifdef RS485_MODEL_EQUIP CMU_PERCLK_SetableEx(DMACLK, ENABLE); // DMAʱÖÓʹÄÜ DMA_GCR_DMAEN_Setable(ENABLE); // DMA×ÜʹÄÜ /*UART1 IO ÅäÖÃ*/ CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý AltFunIO(GPIOB, GPIO_Pin_0, ALTFUN_NORMAL); // PB0 UART1 RX AltFunIO(GPIOB, GPIO_Pin_1, ALTFUN_NORMAL); // PB1 UART1 TX OutputIO(GPIOA, GPIO_Pin_14, OUT_PUSHPULL); // EQUIP RE OutputIO(GPIOA, GPIO_Pin_15, OUT_PUSHPULL); // 485_PWR_EN // UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ Ö»ÓÐUART0¡¢1ÐèҪѡÔñ ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª Ö±½Ó×¢Êͼ´¿É UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK; // UART1¹¤×÷ʱÖÓÑ¡Ôñ UART_para.BaudRate = 9600; UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý UART_para.ParityBit = NONE; // ÆæÅ¼Ð£Ñé UART_para.StopBit = OneBit; // ֹͣλ CMU_GetClocksFreq(&CMU_Clocks); // »ñȡϵͳ¸÷ʱÖÓÆµÂÊ UART_SInit(UART1, &UART_para, &CMU_Clocks); // ³õʼ»¯uart /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/ NVIC_DisableIRQ(UART1_IRQn); UARTx_TODR_RXTO_LEN_Set(UART1, 255); UARTx_ISR_RXTO_Clr(UART1); UARTx_IER_RXTO_IE_Setable(UART1, ENABLE); NVIC_EnableIRQ(UART1_IRQn); UARTx_CSR_RXTOEN_Setable(UART1, ENABLE); UARTx_CSR_RXEN_Setable(UART1, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ UARTx_CSR_TXEN_Setable(UART1, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ UARTx_ISR_RXBF_Clr(UART1); DMA_InitStructure.CHx = DMA_CH3; // DMAͨµÀºÅÉèÖà DMA_InitStructure.CHxPRI = DMA_CHxCR_CHxPRI_HIGH; // ͨµÀÓÅÏȼ¶ÉèÖà DMA_InitStructure.CHxINC = DMA_CHxCR_CHxINC_INCREASE; // ͨµÀµØÖ·Ôö³¤·½Ïò DMA_InitStructure.CHxSSEL = DMA_CHxCR_CH3SSEL_UART1_RX; // ÍâÉèͨµÀÑ¡Ôñ DMA_InitStructure.CHxDIR = DMA_CHxCR_DIR_TO_RAM; // Êý¾Ý´«Êä·½ÏòÉèÖà DMA_InitStructure.CHxTSIZE = UC_RECV_LEN_MAX - 1; // ͨµÀ´«Ê䳤¶È DMA_InitStructure.CHxRAMAD = (uint32)rs485_modeule_pagra.rs485_recv_buf; // Ä¿±êµØÖ· DMA_InitStructure.CHxBDW = DMA_CHxCR_BDW_8BITS; // ͨµÀ´«Êä´ø¿í DMA_InitStructure.CHxFTIE = DISABLE; // ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ DMA_InitStructure.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ NVIC_DisableIRQ(DMA_IRQn); DMA_ISR_DMACHFT_Clr(DMA_CH3); DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë #else CMU_PERCLK_SetableEx(DMACLK, ENABLE); // DMAʱÖÓʹÄÜ DMA_GCR_DMAEN_Setable(ENABLE); // DMA×ÜʹÄÜ /*UART1 IO ÅäÖÃ*/ CMU_PERCLK_SetableEx(PADCLK, ENABLE); // PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý AltFunIO(GPIOE, GPIO_Pin_3, ALTFUN_NORMAL); // PE3 UART1 RX AltFunIO(GPIOE, GPIO_Pin_4, ALTFUN_NORMAL); // PE4 UART1 TX // UART¹¤×÷ʱÖÓÔ´Ñ¡Ôñ Ö»ÓÐUART0¡¢1ÐèҪѡÔñ ÆäËûUART¶Ë¿ÚÔݲ»ÐèÒª UART_para.ClockSrc = CMU_OPCCR1_UART1CKS_APBCLK; // UART1¹¤×÷ʱÖÓÑ¡Ôñ UART_para.BaudRate = 115200; UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý UART_para.ParityBit = NONE; // ÆæÅ¼Ð£Ñé UART_para.StopBit = OneBit; // ֹͣλ CMU_GetClocksFreq(&CMU_Clocks); // »ñȡϵͳ¸÷ʱÖÓÆµÂÊ UART_SInit(UART1, &UART_para, &CMU_Clocks); // ³õʼ»¯uart /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/ NVIC_DisableIRQ(UART1_IRQn); UARTx_TODR_RXTO_LEN_Set(UART1, 255); // Ö»ÓÐuart0ºÍuart1ÓнÓÊÕ³¬Ê±ÖÐ¶Ï UARTx_ISR_RXTO_Clr(UART1); UARTx_IER_RXTO_IE_Setable(UART1, ENABLE); NVIC_EnableIRQ(UART1_IRQn); UARTx_CSR_RXTOEN_Setable(UART1, ENABLE); /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/ UARTx_CSR_RXEN_Setable(UART1, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ UARTx_CSR_TXEN_Setable(UART1, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ UARTx_ISR_RXBF_Clr(UART1); DMA_InitStructure.CHx = DMA_CH3; // DMAͨµÀºÅÉèÖà DMA_InitStructure.CHxPRI = DMA_CHxCR_CHxPRI_HIGH; // ͨµÀÓÅÏȼ¶ÉèÖà DMA_InitStructure.CHxINC = DMA_CHxCR_CHxINC_INCREASE; // ͨµÀµØÖ·Ôö³¤·½Ïò DMA_InitStructure.CHxSSEL = DMA_CHxCR_CH3SSEL_UART1_RX; // ÍâÉèͨµÀÑ¡Ôñ DMA_InitStructure.CHxDIR = DMA_CHxCR_DIR_TO_RAM; // Êý¾Ý´«Êä·½ÏòÉèÖà DMA_InitStructure.CHxTSIZE = UC_RECV_LEN_MAX - 1; // ͨµÀ´«Ê䳤¶È DMA_InitStructure.CHxRAMAD = (uint32)gprs_module_para_g.gprs_recv_buf; // Ä¿±êµØÖ· DMA_InitStructure.CHxBDW = DMA_CHxCR_BDW_8BITS; // ͨµÀ´«Êä´ø¿í DMA_InitStructure.CHxFTIE = DISABLE; // ͨµÀ´«ÊäÍê³ÉÖжÏʹÄÜ DMA_InitStructure.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ NVIC_DisableIRQ(DMA_IRQn); DMA_ISR_DMACHFT_Clr(DMA_CH3); DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë // memset(gprs_module_para_g.gprs_recv_buf, 0, sizeof(gprs_module_para_g.gprs_recv_buf)); #endif } void ALL_GPIO_EXTI_test(void) { // LOW_PULSE_config(); // Âö³åÖÐ¶Ï GPIO_EXTI_Init(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // Íâ½ÓÉ豸µÍµç±¨¾¯ÖÐ¶Ï GPIO_EXTI_Init(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM, EXTI_FALLING, ENABLE); // Íâ½ÓÉ豸ǷѹµÍ±¨¾¯ÖÐ¶Ï // GPIO_EXTI_Init(GPIOH, GPIO_Pin_0, EXTI_BOTH, ENABLE); // ¼îµçµôµçÖÐ¶Ï GPIO_EXTI_Init(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM, EXTI_FALLING, ENABLE); // ﮵çµôµçÖÐ¶Ï // GPIO_EXTI_Init(GPIOF, GPIO_Pin_15, EXTI_BOTH, ENABLE);//δ³É¹¦ // GPIO_EXTI_Init(GPIOE, GPIO_Pin_9, EXTI_BOTH, ENABLE);//³É¹¦ /*NVICÖжÏÅäÖÃ*/ NVIC_DisableIRQ(GPIO_IRQn); NVIC_SetPriority(GPIO_IRQn, 2); // ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(GPIO_IRQn); } void All_GPIO_Init_test(void) { CMU_PERCLK_SetableEx(PADCLK, ENABLE); OutputIO(GPIOD, GPIO_Pin_8, OUT_PUSHPULL); // led PD8 OutputIO(GPIO_GPRS_POWER_PIN_GROUP, GPIO_GPRS_POWER_PIN_NUM, OUT_PUSHPULL); // 3.8v ʹÄÜÒý½Å // OutputIO(GPIOE, GPIO_Pin_5, OUT_PUSHPULL); // 3.8V PE5 OutputIO(GPRS_PWR_EN_PIN_GROUP, GPRS_PWR_EN_PIN_NUM, OUT_PUSHPULL); // ÎÞÏßÄ£¿éµçÔ´¿ØÖÆ InputtIO(GPIOF, GPIO_Pin_14, IN_PULLUP); // KEY3 PF14 InputtIO(GPIOF, GPIO_Pin_15, IN_PULLUP); // KEY2 PF15 InputtIO(GPIOE, GPIO_Pin_9, IN_PULLUP); // KEY1 PE9 // GPIO_SetBits(GPIOF, GPIO_Pin_14); OutputIO(OUTPUT2_EN_PIN_GROUP, OUTPUT2_EN_PIN_NUM, OUT_PUSHPULL); // SEPICµçÔ´Êä³ö PB11 OutputIO(OUTPUT1_EN_PIN_GROUP, OUTPUT1_EN_PIN_NUM, OUT_PUSHPULL); // PB12 OUTPUT2_EN_OFF; OUTPUT1_EN_OFF; OutputIO(POWER_12V_EN_PIN_GROUP, POWER_12V_EN_PIN_NUM, OUT_PUSHPULL); // +12V pb15 power12V_OFF; OutputIO(POWER_9V_EN_PIN_GROUP, POWER_9V_EN_PIN_NUM, OUT_PUSHPULL); // 9V PB14 power9V_OFF; OutputIO(GPIOB, GPIO_Pin_13, OUT_PUSHPULL); // boost_en pb13 BOOST_EN_OFF; InputtIO_H(LOWPLUSE_PIN_NUM, IN_NORMAL); // Âö³åÖжÏÏß ph3 InputtIO(UNCAP_INT_PIN_GROUP, UNCAP_INT_PIN_NUM, IN_NORMAL); // ¿ª¸Ç¼ì²â£¬PD1 OutputIO(GPIOA, GPIO_Pin_0, OUT_PUSHPULL); // LP_LOSE PA0 OutputIO(GPIOA, GPIO_Pin_1, OUT_PUSHPULL); // LV_LOSE PA1 OutputIO(GPIOA, GPIO_Pin_2, OUT_PUSHPULL); // UV_LOSE PA2 OutputIO(GPIOA, GPIO_Pin_3, OUT_PUSHPULL); // CV_LOSE PA3 OutputIO(GPIOF, GPIO_Pin_0, OUT_PUSHPULL); // LCD_3V3_EN PF14 LCD_3V3_ON; // Òº¾§3.3v¹©µç InputtIO(LCD_RD_CLK_PIN_GROUP, LCD_RD_CLK_PIN_NUM, IN_NORMAL); // Òº¾§°æ±¾ÅÐ¶Ï PD4 InputtIO(LCD_CS_PIN_GROUP, LCD_CS_PIN_NUM, IN_NORMAL); // Òº¾§°æ±¾ÅÐ¶Ï PD4 InputtIO(LOW_PWR_INT_PIN_GROUP, LOW_PWR_INT_PIN_NUM, IN_PULLUP); // Íâ½ÓÉ豸µÍµç±¨¾¯ÖжÏÊäÈë PB2 InputtIO(UNDER_PWR_INT_PIN_GROUP, UNDER_PWR_INT_PIN_NUM, IN_PULLUP); // Íâ½ÓÉ豸ǷѹµÍ±¨¾¯ÖжÏÊäÈë PB3 InputtIO(ALARM_LINE_PIN_GROUP, ALARM_LINE_PIN_NUM, IN_PULLUP); // ¹Ø·§±¨¾¯ÊäÈë PA13 OutputIO(ALKA_TEST_EN_PIN_GROUP, ALKA_TEST_EN_PIN_NUM, OUT_PUSHPULL); // ¼îµç²É¼¯¿ØÖÆ PF4 OutputIO(LITH_TEST_EN_PIN_GROUP, LITH_TEST_EN_PIN_NUM, OUT_PUSHPULL); // ﮵ç²É¼¯¿ØÖÆ PF3 InputtIO(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM, IN_PULLUP); // ﮵çµÍµç¼æÈݵôµç¼ì²â PD0 InputtIO_H(GPIO_Pin_0, IN_NORMAL); // ¼îµçµôµç¼ì²â OutputIO(Motor_A_PIN_GROUP, Motor_A_PIN_NUM, OUT_PUSHPULL); // ¿ª¹Ø¿ØÖÆÏßA pb8 OutputIO(Motor_B_PIN_GROUP, Motor_B_PIN_NUM, OUT_PUSHPULL); // pb9 OutputIO(BORROW_PWR_EN_PIN_NUM_GROUP, BORROW_PWR_EN_PIN_NUM, OUT_PUSHPULL); // ½èµç PG2 OutputIO(EX_PWR_EN_PIN_GROUP, EX_PWR_EN_PIN_NUM, OUT_PUSHPULL); // ¿ØÖƹ©µç PG3 InputtIO(LIMIT_TRIG_PIN_GROUP, LIMIT_TRIG_PIN_NUM, IN_NORMAL); // pc13 InputtIO(GPIOG, GPIO_Pin_7, IN_NORMAL); // ¸É»Æ¹Ü±¨¾¯ pg7 InputtIO(HWID0_PIN_GROUP, HWID0_PIN_NUM, IN_NORMAL); // ¼ì²âÍâµç PF5 } #if 0 void GPIO_IRQHandler(void) // Âö³åÖжÏʶ±ð { if (GPIO_EXTI_EXTIISR_ChkEx(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM); low_push_flag = 1; } if (GPIO_EXTI_EXTIISR_ChkEx(GPIOH, GPIO_Pin_0) == SET) { GPIO_EXTI_EXTIISR_ClrEx(GPIOH, GPIO_Pin_0); alka_lose_flag = 1; } if (GPIO_EXTI_EXTIISR_ChkEx(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM) == SET) { GPIO_EXTI_EXTIISR_ClrEx(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM); lith_lose_flag = 1; } } #endif void project_test_1(void) // PD8 5S { if (Sys_GetTick() - get_time > 7000) { get_time = Sys_GetTick(); LED_TOG; printf("circulate tun on led\r\n"); } IWDT_Clr(); } void project_test_2(void) { IWDT_Clr(); // if (HWID0_READ == 0) // { // EX_PWR_EN_H; // } // else // { // EX_PWR_EN_L; // } Gprs_Uart1_Rx_DMA_CH3_Check(); Gprs_Uart1_Receive_Data(); if ((GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_14) == 0) || (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_15) == 0)) // ¶Ì°´ key3 ÎÞÏßÉÏ·¢+ÎÞÏßÉÏ·¢ { delay_ms(50); if (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_14) == 0) // key3 { printf("Turn_On power 3.3v and send gprs\r\n"); GPRS_POWER_ON; // 3.8V ʹÄÜÒý½Å GPRS_POWER_EN_H; // ´ò¿ªÎÞÏßÄ£¿éµçÔ´ delay_ms(500); IWDT_Clr(); Gprs_Open(); //GPRS_Send_process(); } if (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_15) == 0) // key2 ¶Ï°´½øÈëµÍ¹¦ºÄ { LCD_3V3_OFF; GPIO_IPD_Init(); pwr_enter_sleep_mode((uint32)(PMU_CR_SLPDP_DEEPSLEEP)); printf("lower model \r\n"); } } } #define LONG_PRESS_TIME 4000 // ¶Ì°´Ê±¼äãÐÖµ£¬µ¥Î»Îªms #define LONG__LONG_PRESS_TIME 8000 // ³¤°´Ê±¼äãÐÖµ£¬µ¥Î»Îªms #define SHORT_PRESS_TIME 2500 #define DOUBLE_CLICK_TIME 500 // Ë«»÷¼ä¸ô500ms uint32_t volatile press_start_time = 0; uint32_t volatile press_duration = 0; int button_pressed = 0; int last_button_state = 0; int readButton_key1_State(void) { if (GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_9) == 0) { return 1; } else { return 0; } } void project_test_3(void) // SEPICÊä³ö µçÔ´°´¼ü ¶Ì°´£¨12v£© ³¤°´(5v) ³¤³¤°´(9v) key1 { button_pressed = readButton_key1_State(); if (button_pressed != last_button_state) { delay_ms(5); button_pressed = readButton_key1_State(); } if (button_pressed && !last_button_state) { // °´¼ü¸Õ±»°´Ï press_start_time = Sys_GetTick(); } else if (!button_pressed && last_button_state) { // °´¼üÊÍ·Å press_duration = Sys_GetTick() - press_start_time; if (press_duration < SHORT_PRESS_TIME) // 12v { if (GPIOH_ReadInputDataBit(GPIO_Pin_0) == 1) // ¼îµç´æÔÚ { OUTPUT1_EN_ON; power12V_ON; BOOST_EN_ON; } printf("Short press detected.\n"); } else if (press_duration < LONG__LONG_PRESS_TIME && press_duration > LONG_PRESS_TIME) // 5v ??£¿ { printf("long press detected.\n"); // OUTPUT2_EN_ON; // OUTPUT1_EN_OFF; } else if (press_duration >= LONG__LONG_PRESS_TIME) // 9v { printf("Long long press detected.\n"); OUTPUT1_EN_ON; power9V_ON; BOOST_EN_ON; } } IWDT_Clr(); last_button_state = button_pressed; } void project_test_4(void) // ¿ª¹Ø·§ //VALVE_V { Motor_A_EN_L; // ¡£¡£¡£¹Ø·§ Motor_B_EN_H; //... // ¿ª·§ } void project_test_5(void) // Âö³å ¶ÏÏß¼ì²â { if (GPIOH_ReadInputDataBit(LOWPLUSE_PIN_NUM) == 0) // Âö³å¼ì²â { // low_push_flag = 0; for (int i = 0; i < 3; i++) // led ÂýÉÁ3Ï { LED_ON; delay_ms(500); LED_OFF; delay_ms(500); IWDT_Clr(); } } if (UNDER_PWR_READ == 0) // ¶ÏÏß¼ì²â { UV_LOSE_ON; } else { UV_LOSE_OFF; } if (LOW_PWR_READ == 0) { LV_LOSE_ON; } else { LV_LOSE_OFF; } if (PULSE_LINE_READ == 0) { LP_LOSE_ON; } else { LP_LOSE_OFF; } if (ALARM_LINE_READ == 0) { CV_LOSE_ON; } else { CV_LOSE_OFF; } } float mcu_temp = 0; void project_test_6(void) // µç³Ø²ÉÑù¼°µôµç´¥·¢ { IWDT_Clr(); if (Sys_GetTick() - delay_time > 10000) { delay_time = Sys_GetTick(); pwr_vol_g.alka_vcc = Get_Alka_Bat_Voltage(); pwr_vol_g.lith_vcc = Get_Lith_Bat_Voltage(); mcu_temp = Get_Mcu_Temp(); printf("alka vcc =%.2f\r\n", pwr_vol_g.alka_vcc); printf("lith vcc = %.2f \r\n", pwr_vol_g.lith_vcc); printf("mcu_temperature %.1f\r\n", mcu_temp); if (GPIOH_ReadInputDataBit(GPIO_Pin_0) == 0) { // alka_lose_flag = 0; printf("alka lose\r\n"); } if (GPIOH_ReadInputDataBit(LITH_BAT_LOW_PWR_PIN_NUM) == 0) { // lith_lose_flag = 0; printf("lith lose\r\n"); } } } void project_test_7(void) // Òº¾§È«ÏÔʾ { LCD_driver_init_new(); LCD_Clear_NEW(); LCD_All_Display_new(); } void Project_Test_8(void) // ½èµç { if (EX_PWR_EN_READ == 0) { BORROW_PWR_EN_NUM_L; // PG2 ½èµç for (int i = 0; i < 3; i++) // ¿ìÉÁ3´Î { LED_ON; delay_ms(200); // ÑÓʱ200ms LED_OFF; delay_ms(200); IWDT_Clr(); } } if (UNCAP_INT_READ == 1) { for (int i = 0; i < 5; i++) // ¿ìÉÁ5´Î { LED_ON; delay_ms(200); // ÑÓʱ200ms LED_OFF; delay_ms(200); IWDT_Clr(); } // printf("¿ª¸Ç¼ì²â\r\n"); if (GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_7) == 1) { for (int i = 0; i < 6; i++) // ¿ìÉÁ6´Î { LED_ON; delay_ms(200); // ÑÓʱ200ms LED_OFF; delay_ms(200); IWDT_Clr(); } // printf("¸É»Æ¹Ü¼ì²â\r\n"); } } } #define TEST_TIME_SECONDS 1000 // ²¶»ñ´ÎÊý #define SYS_CLOCK_HZ 12000000 void BSTIM_IRQHandler(void) { if (BSTIM_ISR_UIF_Chk() != RESET) { msTicks++; BSTIM_ISR_UIF_Clr(); } } void project_test_9(void) // ʱÖÓ¾«¶È²âÁ¿ { msTicks = 0; uint32_t psc = 1000; // 256; uint32_t arr_value = SYS_CLOCK_HZ / (psc * 1000); // ÒÔ1 msΪһ¸ö¼ÆÊýÖÜÆÚ Timer_Init(psc, arr_value); // µÈ´ý²âÊÔʱ¼ä for (uint32_t i = 0; i < TEST_TIME_SECONDS; i++) { delay_ms(1); // ÑÓʱ1ºÁÃë IWDT_Clr(); } BSTIM_CR1_CEN_Setable(DISABLE); // ¹Ø±Õ¶¨Ê±Æ÷ uint32_t total_ticks = msTicks * arr_value; float measured_frequency = (float)total_ticks * psc; float error_percentage = ((measured_frequency - SYS_CLOCK_HZ) / SYS_CLOCK_HZ) * 100; printf("Measured Frequency: %.2f Hz\r\n", measured_frequency); printf("Error Percentage: %.2f%%\r\n", error_percentage); BSTIM_CR1_CEN_Setable(ENABLE); } void project_test_10(void) // RTCʱ¼ä»ñÈ¡ { if (Sys_GetTick() - delay_time1 > 10000) { delay_time1 = Sys_GetTick(); // Time_Set(0x24, 06, 04, 02, 0x0E, 0x26, 0x50); Get_Time(); IWDT_Clr(); } } void Uart5_Receive_Data(void) { if (uc_recv_para_g.uc_recv_flag == SET) { IWDT_Clr(); printf("MCU<-PC "); for (uint16_t i = 0; i < uc_recv_para_g.uc_recv_length; i++) { printf("0x%02x ", uc_recv_para_g.uc_recv_buf_union.uc_recv_buf[i]); } printf("\r\n"); uc_recv_para_g.uc_recv_flag = RESET; } } void Rs485_Uart1_Receive_Data(void) { if (rs485_modeule_pagra.rs485_recv_flag == SET) { printf("MCU<-modbus "); for (uint16_t i = 0; i < rs485_modeule_pagra.rs485_recv_length; i++) { IWDT_Clr(); printf("0x%02x ", rs485_modeule_pagra.rs485_recv_buf[i]); } printf("\r\n"); rs485_modeule_pagra.rs485_recv_flag = RESET; } } void Gprs_Uart1_Receive_Data(void) { if (gprs_module_para_g.gprs_recv_flag == SET) { printf("MCU<-Grs "); for (uint16_t i = 0; i < gprs_module_para_g.gprs_recv_length; i++) { printf("0x%02x ", gprs_module_para_g.gprs_recv_buf[i]); } printf("\r\n"); gprs_module_para_g.gprs_recv_flag = RESET; } } void Rs485_Uart1_Rx_DMA_CH5_Check(void) { uint16_t timeout_cnt = 0, dma_recv_cnt; uint32_t dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3); if (dma_mar_reg_read != (uint32)rs485_modeule_pagra.rs485_recv_flag) { delay_ms(2); while (dma_mar_reg_read != DMA_CHxMAR_Read(DMA_CH3)) { dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3); delay_ms(2); if (timeout_cnt++ > 100) break; } } dma_recv_cnt = dma_mar_reg_read - (uint32)rs485_modeule_pagra.rs485_recv_buf; if (dma_recv_cnt) { rs485_modeule_pagra.rs485_recv_length = dma_recv_cnt; // ½ÓÊÕRAMµØÖ·ÖØÔØ DMA_ISR_DMACHFT_Clr(DMA_CH3); DMA_CHxCR_ChxEN_Setable(DMA_CH3, DISABLE); // ͨµÀʧÄÜ DMA_CHxMAR_Write(DMA_CH3, (uint32)rs485_modeule_pagra.rs485_recv_buf); DMA_CHxCR_ChxEN_Setable(DMA_CH3, ENABLE); // ͨµÀʹÄÜ rs485_modeule_pagra.rs485_recv_flag = SET; // ½ÓÊÕÍê³É } } uint8_t arr_test[1] = {0x99}; uint8_t Rs485_Read_ARR[8] = {0X01, 0X03, 0X0D, 0XAD, 0X00, 0X0E, 0X57, 0X43}; // ¶ÁÈ¡¹¤¿ö×ÜÁ¿¡ªÑ¹Á¦ void project_test_11(void) // RS485 UART1 ÊÕ·¢Êý¾Ý { //IR_Uart5_Rx_DMA_CH5_Check(); Rs485_Uart1_Rx_DMA_CH5_Check(); // Uart5_Receive_Data(); Rs485_Uart1_Receive_Data(); if (Sys_GetTick() - delay_time2 > 10000) { delay_time2 = Sys_GetTick(); // UART5_RE_ON; // RS485_Send_date_uart(arr_test,1); // UART5_RE_OFF; OUTPUT1_EN_ON; BOOST_EN_ON; delay(1000); // ·Ç×èÈû EQUIP_RE_ON; delay_ms(5); IWDT_Clr(); RS485_Send_date_Equip(Rs485_Read_ARR, sizeof(Rs485_Read_ARR)); delay_ms(5); EQUIP_RE_OFF; IWDT_Clr(); } } void Project_Test(void) { project_test_1(); // led ÖÜÆÚÉÁ˸ project_test_2(); // key3 ÎÞÏßÉÏ·¢ ke2 ¶Ì°´µÍ¹¦ºÄ project_test_3(); // SEPICµçÔ´Êä³ö key1 (°´¼ü²Ù×÷:¶Ì°´12v ³¤°²4s 5V ³¤°² 6s 9v) project_test_5(); // Âö³å ¶ÏÏß¼ì²â project_test_6(); // ²É¼¯µçѹ mcu ÎÂ¶È µôµç¼ì²â Project_Test_8(); // ½èµç²âÊÔ ¿ª¸Ç¼Ó£¨¹âÃ÷µç×裩£¬¸É»Æ¼ì²â project_test_10(); // RTC(ÍⲿʱÖÓ»ñÈ¡) // project_test_11(); // uart5 uart1ͨÐżì²â IWDT_Clr(); }