Си диез / Говнокод #25711 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
void Obmen_RS1(void)
{
  uint8_t txbuf[7], rxbuf[43], CheckSum;
  //если сформирован запрос на чтение по RS1 - SSPC data
  if (SoftFlag.RS_Flag3.bit.RS1_Read_Req)
  {
    txbuf[0] = 0x7B; //{
    txbuf[1] = SSPC_Addr_RS[RS1_Counter];
    txbuf[2] = 0x00; //d0, b00000000 - команда для формирования и отправки посылки данных от SSPC
    txbuf[3] = 0x00;
    txbuf[4] = 0x00;
    txbuf[5] = txbuf[1];//(txbuf[1] ^ txbuf[2] ^ txbuf[3] ^ txbuf[4]); //xor [1..4]
    txbuf[6] = 0x7D; //}
    HAL_UART_Transmit(&huart1, (uint8_t *)&txbuf, 7, 1);
    //HAL_Delay(1)
    if (HAL_UART_Receive(&huart1, (uint8_t *)&rxbuf, 43, 9) == HAL_OK)
    { //если пришел правильный пакет
      if ((rxbuf[0] == 0x5B) 
       && (rxbuf[40] == SSPC_Addr_RS[RS1_Counter])
       && (rxbuf[42] == 0x5D))
      { //считаем КС
        for (j = 1; j < 41; j++)
          CheckSum ^= rxbuf[j];
        if (CheckSum == rxbuf[41])  //Если КС совпадает
        {
          for (j = 1; j < 41; j++)  //Сохраняем пакет в двумерный буфер
            RS1_Paket[RS1_Counter][j] = rxbuf[j];
        }
        else 
        {
          for (j = 1; j < 41; j++)
            RS1_Paket[RS1_Counter][j] = 0;  //Иначе пишем нули
        }
      }
    }
    RS1_Counter++;
    if (RS1_Counter > 15) 
      RS1_Counter = 0;
    SoftFlag.RS_Flag3.bit.RS1_Read_Req = 0; //сбрасываем флаг запроса чтения данных и ждем следующего по таймеру (100мс)
  }
}

Процедура чтения данных от 16 модулей управления нагрузками по RS-485...
для STM32F4x с использованием калокуба

Запостил: ykypeHHbIu_nemyx ykypeHHbIu_nemyx, (Updated )

Комментарии (4) RSS

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8