В общем в обработчике прерываний переменная buf_counter должна инкрементироваться, и в итоге в main функции должна отличаться от 0.
Прерывание срабатывает, до инкрементирования код доходит ( можно и buf_counter++, но стоп не поставить тогда ). Но в watch KEILа buf_counter свое значение не меняет!!!
Когда дело доходит до фнукции main buf_counter имеет значение 0.
Я уже всю голову сломал, гугл не помогает. Пробовал уже и переменные по всякому инициализировать, и статическими, и волатильными
Код: Выделить всё
uint8_t buf[32];
uint8_t buf_counter = 0;
...
void USART1_IRQHandler(void){
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
usartData = USART_ReceiveData(USART1);
if ((usartData =! 13) && (usartData =! 10)){
buf[buf_counter] = usartData;
buf_counter += 1;
}
}
}
...
void sendstr(){
//функция по отправке по usart данных обратно.
}
...
int main(){
char buffer[5];
while(mode == 1){
sprintf(buffer, "%d", buf_counter);
sendstr(buffer);
Delay_ms(10000);
}
}



