stm32f407
В прерываниях по usart заполняю массив данными. Данных всегда одинаковое количество. Когда принимаю последний байт, выставляю флаг и данные разбираю в общем цикле.
Код
if(cnt<MAX_STRLEN){
received_string[cnt-1] = t;
}
else if(cnt == MAX_STRLEN){
received_string[cnt-1] = t;
cnt = 0;
flag_p = 1;
}
received_string[cnt-1] = t;
}
else if(cnt == MAX_STRLEN){
received_string[cnt-1] = t;
cnt = 0;
flag_p = 1;
}
Но прерывание может возникнуть снова в тот момент, когда я еще не успел разобрать данные, соответственно они могут испортиться.
Вопрос, как выйти из этой ситуации? Есть ли какие-нибудь атомарные операции, чтобы данные не бились. Спасибо