| | |
| | | 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; |
| | |
| | | printf("\r\n"); |
| | | } |
| | | |
| | | #if 1 |
| | | |
| | | int fputc(int ch, FILE *f) |
| | | { |
| | | UARTx_TXBUF_Write(UART5, (uint8_t)ch); // ·¢ËÍ´®¿Ú |
| | |
| | | ; // µÈ´ý·¢ËÍÍê³É |
| | | return ch; |
| | | } |
| | | #endif |
| | | |
| | | void Timer_Init(uint32_t psc, uint32_t arr_value) |
| | | { |
| | | CMU_PERCLK_SetableEx(BSTIMCLK, ENABLE); // ÍâÉè×ÜÏßʱÖÓʹÄÜ |
| | |
| | | CMU_ClocksType CMU_Clocks; // ϵͳ¸÷ʱÖÓÆµÂʽṹÌå ÔÚ´ËÓë¼ÆËã²¨ÌØÂÊÓÐ¹Ø |
| | | DMA_InitTypeDef DMA_InitStructure; // DMA³õʼ»¯²ÎÊý½á¹¹Ìå |
| | | |
| | | /*UART0 IO ÅäÖÃ*/ |
| | | /*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¿ÚµÄÊÕ·¢¿ØÖÆ£¨¸ß·¢µÍÊÕ£© |
| | | UART1_RE_ON; |
| | | UART5_RE_ON; |
| | | |
| | | UART_para.BaudRate = 115200; |
| | | UART_para.DataBit = Eight8Bit; // Êý¾ÝλÊý |
| | |
| | | UARTx_CSR_TXEN_Setable(UART1, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ |
| | | UARTx_ISR_RXBF_Clr(UART1); |
| | | |
| | | DMA_InitStructure.CHx = DMA_CH9; // DMAͨµÀºÅÉèÖà |
| | | 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_CH9SSEL_UART1_RX; // ÍâÉèͨµÀÑ¡Ôñ |
| | | 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.CHxEN = ENABLE; // ͨµÀʹÄÜ |
| | | |
| | | NVIC_DisableIRQ(DMA_IRQn); |
| | | DMA_ISR_DMACHFT_Clr(DMA_CH9); |
| | | DMA_ISR_DMACHFT_Clr(DMA_CH3); |
| | | DMA_Init(&DMA_InitStructure); // DMAÅäÖòÎÊýдÈë |
| | | |
| | | #else |
| | |
| | | |
| | | /*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 |
| | | 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; |
| | |
| | | |
| | | /*NVICÖжÏÓÅÏȼ¶ÒÔ¼°ÊÇ·ñ´ò¿ªÖжÏÅäÖÃ*/ |
| | | NVIC_DisableIRQ(UART1_IRQn); |
| | | UARTx_TODR_RXTO_LEN_Set(UART1, 255); |
| | | 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_RXEN_Setable(UART1, ENABLE); // ´ò¿ª½ÓÊÕʹÄÜ |
| | | UARTx_CSR_TXEN_Setable(UART1, ENABLE); // ´ò¿ª·¢ËÍʹÄÜ |
| | | UARTx_ISR_RXBF_Clr(UART1); |
| | | DMA_InitStructure.CHx = DMA_CH9; // DMAͨµÀºÅÉèÖà |
| | | 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_CH9SSEL_UART1_RX; // ÍâÉèͨµÀÑ¡Ôñ |
| | | 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.CHxHTIE = DISABLE; // ͨµÀ´«Êä°ë³ÌÖÕ¶ËʹÄÜ |
| | | DMA_InitStructure.CHxEN = ENABLE; // ͨµÀʹÄÜ |
| | | NVIC_DisableIRQ(DMA_IRQn); |
| | | DMA_ISR_DMACHFT_Clr(DMA_CH9); |
| | | 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 |
| | | } |
| | | |
| | |
| | | LED_TOG; |
| | | printf("circulate tun on led\r\n"); |
| | | } |
| | | IWDT_Clr(); |
| | | } |
| | | |
| | | void project_test_2(void) |
| | | { |
| | | |
| | | if (HWID0_READ == 0) |
| | | { |
| | | EX_PWR_EN_H; |
| | | } |
| | | else |
| | | { |
| | | EX_PWR_EN_L; |
| | | } |
| | | // Gprs_Uart1_Rx_DMA_CH5_Check(); |
| | | // Gprs_Uart5_Receive_Data(); |
| | | 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); |
| | |
| | | printf("Turn_On power 3.3v and send gprs\r\n"); |
| | | GPRS_POWER_ON; // 3.8V ʹÄÜÒý½Å |
| | | GPRS_POWER_EN_H; // ´ò¿ªÎÞÏßÄ£¿éµçÔ´ |
| | | GPRS_Send_process(); |
| | | delay_ms(500); |
| | | IWDT_Clr(); |
| | | Gprs_Open(); |
| | | //GPRS_Send_process(); |
| | | } |
| | | if (GPIO_ReadInputDataBit(GPIOF, GPIO_Pin_15) == 0) // key2 ¶Ï°´½øÈëµÍ¹¦ºÄ |
| | | { |
| | |
| | | press_duration = Sys_GetTick() - press_start_time; |
| | | if (press_duration < SHORT_PRESS_TIME) // 12v |
| | | { |
| | | if (GPIO_ReadInputDataBit(GPIOH, GPIO_Pin_0) == 1) // ¼îµç´æÔÚ |
| | | if (GPIOH_ReadInputDataBit(GPIO_Pin_0) == 1) // ¼îµç´æÔÚ |
| | | { |
| | | OUTPUT1_EN_ON; |
| | | power12V_ON; |
| | |
| | | BOOST_EN_ON; |
| | | } |
| | | } |
| | | IWDT_Clr(); |
| | | last_button_state = button_pressed; |
| | | } |
| | | |
| | |
| | | |
| | | void project_test_5(void) // Âö³å ¶ÏÏß¼ì²â |
| | | { |
| | | if (GPIO_ReadInputDataBit(LOWPLUSE_PIN_GROUP, LOWPLUSE_PIN_NUM) == 0) // Âö³å¼ì²â |
| | | if (GPIOH_ReadInputDataBit(LOWPLUSE_PIN_NUM) == 0) // Âö³å¼ì²â |
| | | { |
| | | // low_push_flag = 0; |
| | | for (int i = 0; i < 3; i++) // led ÂýÉÁ3ÏÂ |
| | |
| | | float mcu_temp = 0; |
| | | void project_test_6(void) // µç³Ø²ÉÑù¼°µôµç´¥·¢ |
| | | { |
| | | IWDT_Clr(); |
| | | if (Sys_GetTick() - delay_time > 10000) |
| | | { |
| | | delay_time = Sys_GetTick(); |
| | |
| | | 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 (GPIO_ReadInputDataBit(GPIOH, GPIO_Pin_0) == 0) |
| | | if (GPIOH_ReadInputDataBit(GPIO_Pin_0) == 0) |
| | | { |
| | | // alka_lose_flag = 0; |
| | | printf("alka lose\r\n"); |
| | | } |
| | | if (GPIO_ReadInputDataBit(LITH_BAT_LOW_PWR_PIN_GROUP, LITH_BAT_LOW_PWR_PIN_NUM) == 0) |
| | | if (GPIOH_ReadInputDataBit(LITH_BAT_LOW_PWR_PIN_NUM) == 0) |
| | | { |
| | | // lith_lose_flag = 0; |
| | | printf("lith lose\r\n"); |
| | |
| | | |
| | | void project_test_7(void) // Òº¾§È«ÏÔʾ |
| | | { |
| | | #if 1 |
| | | LCD_driver_init_new(); |
| | | LCD_Clear_NEW(); |
| | | LCD_All_Display_new(); |
| | | #endif |
| | | } |
| | | |
| | | void Project_Test_8(void) // ½èµç |
| | |
| | | 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\n", measured_frequency); |
| | | printf("Error Percentage: %.2f%%\n", error_percentage); |
| | | printf("Measured Frequency: %.2f Hz\r\n", measured_frequency); |
| | | printf("Error Percentage: %.2f%%\r\n", error_percentage); |
| | | BSTIM_CR1_CEN_Setable(ENABLE); |
| | | } |
| | | |
| | |
| | | delay_time1 = Sys_GetTick(); |
| | | // Time_Set(0x24, 06, 04, 02, 0x0E, 0x26, 0x50); |
| | | Get_Time(); |
| | | IWDT_Clr(); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | 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("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"); |
| | |
| | | } |
| | | } |
| | | |
| | | void Gprs_Uart5_Receive_Data(void) |
| | | void Gprs_Uart1_Receive_Data(void) |
| | | { |
| | | if (gprs_module_para_g.gprs_recv_flag == SET) |
| | | { |
| | |
| | | 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_CH9); |
| | | 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_CH9)) |
| | | while (dma_mar_reg_read != DMA_CHxMAR_Read(DMA_CH3)) |
| | | { |
| | | dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH9); |
| | | dma_mar_reg_read = DMA_CHxMAR_Read(DMA_CH3); |
| | | delay_ms(2); |
| | | if (timeout_cnt++ > 100) |
| | | break; |
| | |
| | | { |
| | | rs485_modeule_pagra.rs485_recv_length = dma_recv_cnt; |
| | | // ½ÓÊÕRAMµØÖ·ÖØÔØ |
| | | DMA_ISR_DMACHFT_Clr(DMA_CH5); |
| | | DMA_CHxCR_ChxEN_Setable(DMA_CH5, DISABLE); // ͨµÀʧÄÜ |
| | | DMA_ISR_DMACHFT_Clr(DMA_CH3); |
| | | DMA_CHxCR_ChxEN_Setable(DMA_CH3, DISABLE); // ͨµÀʧÄÜ |
| | | |
| | | DMA_CHxMAR_Write(DMA_CH5, (uint32)rs485_modeule_pagra.rs485_recv_buf); |
| | | DMA_CHxMAR_Write(DMA_CH3, (uint32)rs485_modeule_pagra.rs485_recv_buf); |
| | | |
| | | DMA_CHxCR_ChxEN_Setable(DMA_CH5, ENABLE); // ͨµÀʹÄÜ |
| | | DMA_CHxCR_ChxEN_Setable(DMA_CH3, ENABLE); // ͨµÀʹÄÜ |
| | | rs485_modeule_pagra.rs485_recv_flag = SET; // ½ÓÊÕÍê³É |
| | | } |
| | | } |
| | |
| | | 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(); |
| | | //IR_Uart5_Rx_DMA_CH5_Check(); |
| | | Rs485_Uart1_Rx_DMA_CH5_Check(); |
| | | Uart5_Receive_Data(); |
| | | // Uart5_Receive_Data(); |
| | | Rs485_Uart1_Receive_Data(); |
| | | if (Sys_GetTick() - delay_time2 > 7000) |
| | | if (Sys_GetTick() - delay_time2 > 10000) |
| | | { |
| | | delay_time2 = Sys_GetTick(); |
| | | UART1_RE_ON; |
| | | RS485_Send_date_uart(arr_test, 1); |
| | | // UART5_RE_ON; |
| | | // RS485_Send_date_uart(arr_test,1); |
| | | // UART5_RE_OFF; |
| | | |
| | | OUTPUT1_EN_ON; |
| | | BOOST_EN_ON; |
| | | delay(1000); // ·Ç×èÈû |
| | | EQUIP_RE_ON; |
| | | RS485_Send_date_Equip(Rs485_Read_ARR, 8); |
| | | 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_5(); // Âö³å ¶ÏÏß¼ì²â |
| | | project_test_6(); // ²É¼¯µçѹ mcu ÎÂ¶È µôµç¼ì²â |
| | | Project_Test_8(); // ½èµç²âÊÔ ¿ª¸Ç¼Ó£¨¹âÃ÷µç×裩£¬¸É»Æ¼ì²â |
| | | project_test_10(); // RTC(ÍⲿʱÖÓ»ñÈ¡) |
| | | project_test_11(); // uart5 uart5 ͨÐżì²â |
| | | // project_test_11(); // uart5 uart1ͨÐżì²â |
| | | IWDT_Clr(); |
| | | } |