В настоящее время я работаю над 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 до и его повторное включение после позволяет избежать проблемы, но не позволяет мне получать данные во время операции, что было бы возможно, поскольку прерывание приема находится в ОЗУ.
На самом деле, похоже, что это не связано с самим прерыванием, потому что он все еще висит без прерывания приема.
Есть идеи?