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

KEIL STM32 Pending

При запуске программы надо очистить всякие не нужные прерывания, например TC в USART. Сам TC очищаю и пытаюсь сбросить Pending-и в NVIC и

не получается. Чего они гады не сбрасываются?

 

USART3->SR&=(~USART_FLAG_TC); // Clear TC

NVIC->ICPR[0]=0xFFFFFFFF; NVIC->ICPR[1]=0xFFFFFFFF; // Clear All Pending

__enable_irq();

 

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


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

Выяснил. Оказывается pending-и сбрасываются, но почти тут же снова устанавливаются. Оказывается, после инициализации UARTа надо задержку вставить, поскольку TC устанавливается после какого то кол-ва клоков UARTа, а не сразу. А вот под дебагером всего этого безобразия не видно :)

 

for(i=0; i<10000; i++);

USART3->SR&=(~USART_FLAG_TC); // Clear TC

NVIC->ICPR[0]=0xFFFFFFFF; NVIC->ICPR[1]=0xFFFFFFFF; // Clear All Pending

__enable_irq();

 

Вот так работает. Тема закрыта.

Изменено пользователем vlad_new

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


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

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

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

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

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

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

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

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

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

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