vlad_new 1 8 июля, 2012 Опубликовано 8 июля, 2012 · Жалоба При запуске программы надо очистить всякие не нужные прерывания, например 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(); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vlad_new 1 8 июля, 2012 Опубликовано 8 июля, 2012 (изменено) · Жалоба Выяснил. Оказывается 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(); Вот так работает. Тема закрыта. Изменено 8 июля, 2012 пользователем vlad_new Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться