- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
void Obmen_RS1(void)
{
uint8_t txbuf[7], rxbuf[43], CheckSum;
if (SoftFlag.RS_Flag3.bit.RS1_Read_Req)
{
txbuf[0] = 0x7B;
txbuf[1] = SSPC_Addr_RS[RS1_Counter];
txbuf[2] = 0x00;
txbuf[3] = 0x00;
txbuf[4] = 0x00;
txbuf[5] = txbuf[1];
txbuf[6] = 0x7D;
HAL_UART_Transmit(&huart1, (uint8_t *)&txbuf, 7, 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;
}
}
Процедура чтения данных от 16 модулей управления нагрузками по RS-485...
для STM32F4x с использованием калокуба