В настоящее время я работаю над STM32F103, и я хочу запрограммировать вспышку. Однако, как кажется, что программирование вспышки с USART устройства, принимающего байт в то же время сделать его висит:STM32F103 зависает при обновлении страницы с помощью USART
FLASH_BASE->CR |= FLASH_CR_PER;
while (FLASH_BASE->SR & FLASH_SR_BSY);
FLASH_BASE->AR = pageAddr;
FLASH_BASE->CR |= FLASH_CR_STRT; // Hangs forever when receiving
// data on USART2 in the same time
while (FLASH_BASE->SR & FLASH_SR_BSY);
FLASH_BASE->CR &= ~FLASH_CR_PER;
Отключение флаг RE на USART2 до и повторного включения, что после того, как избежать этой проблемы, но это мешает мне от приема данных во время операции, что было бы возможно, поскольку прерывание приема находится в ОЗУ.
На самом деле, похоже, что он не связан с самим прерыванием, поскольку он все еще висит без прерывания приема.
Любая идея?
Является ли таблица векторов прерываний неподвижной? –
На самом деле, моя проблема была ошибкой в обработке UART, в libmaple См .: https://github.com/leaflabs/libmaple/issues/109 И: https://github.com/leaflabs/libmaple/issues/107 Флаг RXNE был неправильно проверен во время прерывания Кроме того, я переместил прерывания uart в раздел RAM – Gregwar