VictorR 0 7 января, 2017 Опубликовано 7 января, 2017 (изменено) · Жалоба С новым годом! unsigned char n=0; unsigned char dat[10]; *** void main(void) { *** установки портов и прерываний *** while(1); } ** void USART1_IRQHandler(void) { USART1_DR=dat[n]; n++; if(n>3) n=0; } Программа работает. Секунд 5. А если unsigned char n; заменить на unsigned int n; не работает вообще! А если вместо USART1_DR=dat[n]; написать USART1_DR=dat[2]; (например), то все работает нормально Ну не е-мое? PS IAR 7.8 официальный с ограничением по коду. Оптимизация выключена Изменено 7 января, 2017 пользователем IgorKossak [codebox] для длинного кода, [code] - для короткого! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gazpar 1 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Гляньте в ассемблер (во что там раскатался ваш код). И вас с новым годом! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Программа работает. Секунд 5.И что потом? Зависает, вылетает в аварийное прерывание или еще что то? Сам работаю на версии 7.80.02. Сейчас занимаюсь относительно большим проектом - USB, CAN, USART на STM32F407 - вообще ни каких проблем. Библиотеками сторонними, правда не пользуюсь. Весь проект с нуля написан ручками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VictorR 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба К сожалению, работаю без отладчика, так что ответить на Ваш вопрос не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба После USART1_DR=dat[n]; прерывание TXE считается обработанным, и ничто не мешает процессору осуществить повторный вход в USART1_IRQHandler, например, сразу после n++; Потому и работает, секунд 5, пока не исчерпается стек... Потому и работает при unsigned char, так как индекс ограничен хотя бы числом 255, и не улетает в неведомые адресные пространства... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба и ничто не мешает процессору осуществить повторный вход в Если это Cortex-M, то мешает архитектура. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться