Tôi đang sử dụng STM32F105 để liên lạc với chip Linx GPS bằng UART.
Nếu tôi không sử dụng ngắt (nếu tôi chỉ thăm dò cờ RX) thì nó hoạt động tốt. Nhưng tôi nhận được kết quả bất ngờ khi cố gắng sử dụng ngắt.
Ví dụ: nếu tôi chỉ kích hoạt ngắt RXNE ("RX không trống") USART_ITConfig(USARTx, USART_IT_RXNE)
, thì mã chỉ nên chuyển sang ISR cho một sự kiện cụ thể này. Nhưng ngắt cũng được kích hoạt cho một điều kiện tràn ngập.
Theo như xóa cờ, có vẻ như phương pháp này phụ thuộc vào cờ. Để xóa cờ tràn ( USART_IT_ORE
), Hướng dẫn sử dụng giải thích rằng trước tiên tôi nên đọc thanh USARTx_SR
ghi, sau đó đọc thanh USARTx_DR
ghi. Điều này không hoạt động; cờ được xóa
Ngoài ra còn có một USART_ClearITPendingBit()
chức năng, nhưng nó chỉ chấp nhận một tập hợp nhỏ các cờ.
Có tám nguồn ngắt khác nhau có thể được kích hoạt có chọn lọc và mười cờ khác nhau. Có một bản tóm tắt ở đâu đó về cách quản lý tất cả các cờ này?