forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
Function/PROJECT_TETS/project_test.c
@@ -9,12 +9,15 @@
#include "ir_nec.h"
#include "gprs_module_api.h"
#include "1lcd_new.h"
#include "1powermanage.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;
@@ -31,6 +34,8 @@
  while (Sys_GetTick() < start_time + ms)
    ; // Ñ­»·µÈ´ý
}
#if Debug_Model
void AppNvr_Print(void)
{
  CMU_ClocksType CMU_Clocks;
@@ -43,15 +48,16 @@
  printf("\r\n");
}
#if 1
int fputc(int ch, FILE *f)
{
  UARTx_TXBUF_Write(UART5, (uint8_t)ch); // ·¢ËÍ´®¿Ú
  while (RESET == UARTx_ISR_TXSE_Chk(UART5))
    ; // µÈ´ý·¢ËÍÍê³É
  return ch;
}
 int fputc(int ch, FILE *f)
 {
   UARTx_TXBUF_Write(UART5, (uint8_t)ch); // ·¢ËÍ´®¿Ú
   while (RESET == UARTx_ISR_TXSE_Chk(UART5))
     ; // µÈ´ý·¢ËÍÍê³É
   return ch;
 }
#endif
void Timer_Init(uint32_t psc, uint32_t arr_value)
{
  CMU_PERCLK_SetableEx(BSTIMCLK, ENABLE);          // ÍâÉè×ÜÏßʱÖÓʹÄÜ
@@ -98,12 +104,12 @@
  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;              // Êý¾ÝλÊý
@@ -165,10 +171,10 @@
  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; // Ä¿±êµØÖ·
@@ -178,7 +184,7 @@
  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
@@ -187,10 +193,8 @@
  /*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;
@@ -202,7 +206,7 @@
  /*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);
@@ -211,10 +215,10 @@
  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; // Ä¿±êµØÖ·
@@ -223,8 +227,9 @@
  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
}
@@ -337,11 +342,12 @@
    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;
@@ -349,25 +355,30 @@
  else
  {
    EX_PWR_EN_L;
  }
  // Gprs_Uart1_Rx_DMA_CH5_Check();
  // Gprs_Uart5_Receive_Data();
   }
  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(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 ¶Ï°´½øÈëµÍ¹¦ºÄ
    {
      //printf("lower model \r\n");
      BSTIM_CR1_CEN_Setable(DISABLE);
      delay_ms(50);
      LCD_3V3_OFF;
      GPIO_IPD_Init();
      pwr_enter_sleep_mode((uint32)(PMU_CR_SLPDP_DEEPSLEEP));
      printf("lower model \r\n");
      Deep_sleep_mode();//Éî¶È˯Ãß
    }
  }
}
@@ -412,7 +423,7 @@
    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;
@@ -430,11 +441,12 @@
    else if (press_duration >= LONG__LONG_PRESS_TIME) // 9v
    {
      printf("Long long press detected.\n");
      OUTPUT1_EN_ON;
      OUTPUT1_EN_ON;
      power9V_ON;
      BOOST_EN_ON;
    }
  }
  IWDT_Clr();
  last_button_state = button_pressed;
}
@@ -449,7 +461,7 @@
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ÏÂ
@@ -501,6 +513,7 @@
float mcu_temp = 0;
void project_test_6(void) // µç³Ø²ÉÑù¼°µôµç´¥·¢
{
  IWDT_Clr();
  if (Sys_GetTick() - delay_time > 10000)
  {
    delay_time = Sys_GetTick();
@@ -510,12 +523,12 @@
    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");
@@ -525,11 +538,9 @@
void project_test_7(void) // Òº¾§È«ÏÔʾ
{
#if 1
  LCD_driver_init_new();
  LCD_Clear_NEW();
  LCD_All_Display_new();
#endif
}
void Project_Test_8(void) // ½èµç
@@ -603,8 +614,8 @@
  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);
}
@@ -616,6 +627,7 @@
    delay_time1 = Sys_GetTick();
    // Time_Set(0x24, 06, 04, 02, 0x0E, 0x26, 0x50);
    Get_Time();
    IWDT_Clr();
  }
}
@@ -623,6 +635,7 @@
{
  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++)
    {
@@ -640,6 +653,7 @@
    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");
@@ -647,7 +661,7 @@
  }
}
void Gprs_Uart5_Receive_Data(void)
void Gprs_Uart1_Receive_Data(void)
{
  if (gprs_module_para_g.gprs_recv_flag == SET)
  {
@@ -664,14 +678,14 @@
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;
@@ -683,12 +697,12 @@
  {
    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; // ½ÓÊÕÍê³É
  }
}
@@ -697,31 +711,38 @@
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_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 uart5 Í¨Ðżì²â
  //project_test_11(); // uart5 uart1ͨÐżì²â
  IWDT_Clr();
}