🌱 STM32 - 16. UART Interrupt Example - Register Level
Ở bài viết trước mình đã giới thiệu với các bạn về một ví dụ giao tiếp UART với PC, chế độ Polling, ở bài viết này mình sẽ sử dụng Interrupt để giao tiếp. Một ưu điểm dễ thấy của Interrupt đó là khi có những sự kiện quan trọng xảy ra chúng ta có thể phát hiện và sử lý ngay lập tức.
Xem bài:
Các kỹ thuật thiết kế luồng xử lý trong chương trình nhúng
Đối với ứng dụng mình đang hướng tới, đó là Bootloader, có thể thấy việc dùng Polling là không khả thi. Việc chờ đợi sự kiện cờ RXNE = 1 trong khi các tác vụ đang thực hiện là điều bất khả thi.
👉 Phần cứng sử dụng:
- STM32F401RE - NUCLEO Board.
- CP2102 USB-to-UART.
👉 Phần mềm sử dụng:
- STM32CubeIDE ⇒ Xem hướng dẫn sử dụng.
- Hercules.
👉 Việc dùng ngắt giúp công việc này dễ dàng hơn rất nhiều. Chẳng hạn, khi muốn cập nhật Firmware, chúng ta có thể truyền UART đến Vi điều khiển và STM32 sẽ không để lỡ sự kiện này. Khi chúng ta setup ngắt UART ở mức ưu tiên cao để tránh những sự kiện khác xen vào.
Khác với chế độ Polling, UART Interrupt có một số đặc điểm khác biệt sau:
- Ở hàm Init, chúng ta cần Enable ngắt Truyền/Nhận UART.
- Viết Hàm IRQ Handler.
👉 Mình để lại Video sau để các bạn tham khảo nhé!