ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
801986 Топик полностью
SciFi (14.12.2017 14:43, просмотров: 209) ответил 0men на за 20 лет никогда такой проблемы не встречал. Переменная в прерывании изменялась? Тогда да, "сам дурак", volatile там обязателен. Нет, только считывалась? Тогда код в студию
Пожалуйста: void send(int byte) { txfifo[txhead & (TXFIFOSZ - 1)] = byte; txhead++; } void tx_irq_handler(void) { if (txhead != txtail) { TX_REG = txfifo[txtail & (TXFIFOSZ - 1)]; txtail++; } } Если txhead не volatile, компилятор имеет право сделать так: void send(int byte) { int tmp = txhead & (TXFIFOSZ - 1); txhead++; txfifo[tmp] = byte; } и поползут глюки.
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้