Принимаю команду с терминала
Код
if (usart1_rx_ready)
{
usart1_rx_ready = 0;
PARSER_ParseCommand(usart1_rx_buf);
}
ставлю точку останова на PARSER_ParseCommand(usart1_rx_buf); - вижу пришла красивая команда с '\0' в конце.{
usart1_rx_ready = 0;
PARSER_ParseCommand(usart1_rx_buf);
}
захожу внутрь функции
Код
uint32_t PARSER_ParseCommand(char *str)
{
uint32_t com_found = 0;
uint32_t len = 0;
len = strlen(str);
char temp_str[len];
strlen вычисляет длину строки - 504588880 - и естественно при алокации - char temp_str[len] - выпадаем в хард фолт.{
uint32_t com_found = 0;
uint32_t len = 0;
len = strlen(str);
char temp_str[len];
Ну и кто он (IAR) после этого?