Перейти к содержанию
    

Программа работает. Секунд 5.

С новым годом!

 

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 официальный с ограничением по коду. Оптимизация выключена

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программа работает. Секунд 5.
И что потом? Зависает, вылетает в аварийное прерывание или еще что то?

 

Сам работаю на версии 7.80.02. Сейчас занимаюсь относительно большим проектом - USB, CAN, USART на STM32F407 - вообще ни каких проблем. Библиотеками сторонними, правда не пользуюсь. Весь проект с нуля написан ручками.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После

USART1_DR=dat[n];

прерывание TXE считается обработанным, и ничто не мешает процессору осуществить повторный вход в USART1_IRQHandler, например, сразу после n++;

Потому и работает, секунд 5, пока не исчерпается стек...

Потому и работает при unsigned char, так как индекс ограничен хотя бы числом 255, и не улетает в неведомые адресные пространства...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и ничто не мешает процессору осуществить повторный вход в

Если это Cortex-M, то мешает архитектура.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...