Выяснил. Оказывается 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 - Jul 8 2012, 21:17