Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912
обнаружил неприятность. сутью использую два уарта, без прерываний по одинаковой схеме - DMA -> UART 1.запускаю приложение - все работает (оба uarta) 2. останавливаю отдадчиком 3. отпускаю 4. один работает другой мертво застревает (перестает принимать байты)
я сначала на dma грешил - плясал с бубном и тд. особо бесило то что оба уарта использую один тже код - а работают поразному. в один прекрасный момент я принял аксиому что DMA нипричем - и стал ковырять uart
обратил внимание на то что тот который отваливается имеет постоянный долбеж со стороны другого устройства ему на RX а тот который не отваливается этого не испытываетв изделии.
предположив что при останове отладчиком uart зависает если на него сыпать данные я сделал при каждом dma обмене переинициализацию uart - все заработало!! имется в коде вызов DBGMCU_Config ( DBGMCU_CR_DBG_STOP | DBGMCU_STOP_PERIFERIALS , ENABLE) ;
что это может быть? что делать? переинициализация уата каждый раз - некошерно.
В STM32 куча всяких глюков в периферии, мне он показался самым глючным чипом изо всех, что я пробовал Мож в других глюков больше, но здесь они существенные