Все получилось)
В том колбеке копируется один символ, а не строка. Но по колбеку кажется будто копируется вся строка ))
Вот так, все четко работает:
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
if(pos_receive<DATA_LEN)
{
data[pos_receive]=Buf[0];
pos_receive++;
}
else
{
pos_receive=0;
}
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
flags=1;
timer=0;
return (USBD_OK);
/* USER CODE END 6 */
}
А в цикле уже работает парсер:
timer++;
HAL_Delay(50);
if(flags && timer>10)
{
LED_ON;
if(string_cmp((char*)data,"ON_WRK"))
{
CDC_Transmit_FS((uint8_t*)at_okk, strlen((char*)at_okk));
Usart1_Send_Data((char*)at_okk, strlen((char*)at_okk));
}
else if(string_cmp((char*)data,"OFF_WRK"))
{
........
}
не нужны такие вопросы, тем более схему надо брать из даташит, где питание 2х полярное. ОУ - да, любое, КР544уд2 меньше 50 центов. 8 страниц о ни чём.
кит купите на Али, Озоне,..
БП - дороже, тр-р, КРЕНки там и литы...
Вызов парсера
парсер
uint8_t aRxBuffer[RXBUFFERSIZE];
char *commandBuff;
commandBuff указатель на локальный массив. Правда, наверно, компилятор при включении оптимизации его зарубит.
А что у вас с оптимизацией?
Рекомендуемые сообщения