2016-03-27 52 views
2

Şu an CubeMX tarafından üretilen kod ile HAL sürücülerini kullanıyorum. Ana rutinde HAL_UART_Receive_IT()'u aradım. UART üzerinden veri gönderildikten sonra (geri döngüde bağlanır), modülün bayt aldığını ve kayıtlarda RXNE bitini ayarlandığını görebiliyorum. Ancak kesinti oluşturulmuyor mu? Nedenini açıklayamıyorum ... HAL_UART_Receive_IT() işlevinde kod etkinleştirme kesintileri var, yani sorun ne?STM32 HAL UART RXNE kesintisi oluşturulmadı

+0

Belirli bir kod olmadan tahmin etmek biraz zor, benim önerim hata ayıklayıcısındaki I/O kayıt ayarlarına göz atmak için başlangıçtaki gariplikleri tespit etmek ve eğer bu yazılacak direk register yazma ile asgari bir repro vakası çıkarılamıyorsa. Her neyse, kesintinin yapılmadığını nasıl anladığınızı anlatabilir misiniz? Kesinti vektörünün düzgün bir şekilde yönlendirildiğini ve kesintilerin global olarak maskelenmediğini doğruladınız mı? – doynax

cevap

4

Sorunuzda yeterli bilgi ve kod vermiyorsunuz. Neyse, stm32xx_hal_msp.c dosyasında size bakış donanım açısından periferik senin başlatmak: kesmelerini etkinleştirmek emin olun çok

HAL_NVIC_SetPriority(USART1_IRQn, 0, 1); 
    HAL_NVIC_EnableIRQ(USART1_IRQn); 

Sonra stm32xx_it.c dosyasına

void USART1_IRQHandler(void) 
{ 
    HAL_UART_IRQHandler(&huart1); 
} 

eklemek