GPIO đọc nút bấm và đếm xung như thế nào?
- Cơ bản
- Bài viết
- Từ 14 tuổi
- 4 phút đọc

Mục lục
- Vi điều khiển
- Chân đầu ra
- Tín hiệu xung
Bạn sẽ học được gì
- Nêu được GPIO dùng làm đầu vào hoặc đầu ra.
- Giải thích được cách đọc nút bấm bằng điện trở kéo lên.
- Mô tả được bộ đếm xung ghi sườn xung ra sao.
Cần biết trước
Nên biết điện trở kéo lên và điện áp là gì.
GPIO dùng để làm gì?
Người dùng thường chỉ cần cấu hình các chân vào ra làm đầu vào hoặc đầu ra đơn giản. Trên ESP32, IO MUX, RTC IO MUX và ma trận GPIO cho phép định tuyến linh hoạt tín hiệu ngoại vi tới các chân GPIO. Mỗi chân có thể có những giới hạn riêng, vì vậy cần kiểm tra chức năng và hạn chế của chân trước khi dùng.
- Tín hiệu vào
- Chân cấu hình đầu vào
- Tín hiệu ra
GPIO đọc nút bấm như thế nào?
Chân vào không nối gì ở trạng thái không xác định, gọi là trôi nổi (floating). Điện trở kéo lên hoặc kéo xuống đảm bảo chân ở mức cao hoặc thấp rõ ràng, chỉ dùng một dòng nhỏ.
Điện trở kéo lên nối với điện áp cao, còn điện trở kéo xuống nối với đất. Trong mạch có nút nối chân với đất, điện trở kéo lên giúp chân đầu vào đọc mức cao khi nút chưa nhấn. Khi nút được nhấn, nó nối chân đầu vào thẳng xuống đất.
- Điện trở kéo lên
- Nút bấm
- Chân đầu vào
Bộ đếm xung ghi xung như thế nào?
Chip ESP32 có nhiều bộ đếm xung trong module. Mỗi bộ đếm xung thực chất là một bộ đếm độc lập có nhiều kênh, mỗi kênh có thể tăng hoặc giảm bộ đếm ở sườn lên hoặc sườn xuống.
Bộ đếm tự đặt lại về không khi vượt qua giới hạn cao hoặc thấp đã cấu hình. Điểm theo dõi cho phép bộ đếm kích hoạt một sự kiện khi giá trị đếm đạt một mức nhất định.
- Chuỗi xung vào
- Bộ đếm xung
- Sự kiện khi đạt mức đếm
Bộ đếm xung có các hàm điều khiển như bật bộ lọc xung nhiễu (glitch filter), bắt đầu và dừng bộ đếm, đọc và xóa giá trị đếm.
Ví dụ trong đời sống
Hãy cùng người lớn nghĩ về một chiếc quạt có nút bấm. Chân GPIO đọc xem nút đã nhấn chưa. Một cảm biến vòng quay gửi xung vào bộ đếm; biết số xung ứng với mỗi vòng thì có thể tính số vòng quay.
Hiểu lầm thường gặp
Chân không nối gì thì đọc là thấp. Chân như vậy ở trạng thái không xác định, gọi là trôi nổi.
Chân GPIO tự đếm được xung. Trên ESP32, ngoại vi PCNT có thể đếm các sườn lên hoặc xuống đã cấu hình; chương trình có thể đọc và xóa giá trị đếm.
Câu hỏi thường gặp
GPIO là gì?
GPIO là chân vào ra của vi điều khiển, thường cấu hình làm đầu vào hoặc đầu ra đơn giản.
Vì sao nút bấm cần điện trở kéo lên?
Điện trở kéo lên giữ chân ở mức cao khi nút chưa nhấn, để chân không bị trôi nổi.
Sườn xung là gì?
Đó là lúc tín hiệu chuyển từ thấp lên cao (sườn lên) hoặc từ cao xuống thấp (sườn xuống).
Điểm theo dõi của bộ đếm xung là gì?
Đó là cách để bộ đếm kích hoạt một sự kiện khi giá trị đếm đạt một mức nhất định.
Tóm tắt
- GPIO thường được cấu hình làm đầu vào hoặc đầu ra đơn giản.
- Điện trở kéo lên làm chân đọc mức cao khi nút chưa nhấn, và nút nối chân xuống đất khi nhấn.
- Bộ đếm xung đếm sườn lên hoặc xuống, và có thể kích hoạt sự kiện khi đạt một giá trị.
Thuật ngữ trong bài
Tên tiếng Việt, tên tiếng Anh và nghĩa dùng trong bài. Di chuột, chạm hoặc dùng phím Tab tới từ có gạch chân chấm để xem giải thích ngay khi đọc.
- GPIOGeneral-purpose input/output
- Chân của vi điều khiển có thể cấu hình làm đầu vào hoặc đầu ra đơn giản.
- Chân trôi nổiFloating pin
- Chân đầu vào không nối với mức cao hay thấp nào nên trạng thái không xác định.
- Điện trở kéo lên và kéo xuốngPull-up and pull-down resistors
- Điện trở giữ chân ở mức cao (nối với điện áp cao) hoặc thấp (nối với đất) khi không có gì điều khiển.
- Bộ đếm xungPulse counter
- Khối phần cứng đếm số sườn lên hoặc sườn xuống của một tín hiệu.
- Sườn xungEdge
- Thời điểm tín hiệu chuyển từ thấp lên cao (sườn lên) hoặc từ cao xuống thấp (sườn xuống).
- Bộ lọc xung nhiễuGlitch filter
- Tính năng của bộ đếm xung giúp bỏ qua các xung nhiễu ngắn.
Bài này chưa được đánh dấu là đã xem
Thấy nội dung sai hoặc chưa an toàn?
Báo cho quản trị viên qua email. Thư có sẵn tên bài và đường dẫn.
Có thể bạn cũng quan tâm
Cơ bảnUART truyền một byte qua hai chân như thế nào?
UART gửi dữ liệu nối tiếp không cần xung nhịp ngoài: bài giải thích chân TX và RX, khung bit bắt đầu, dữ liệu, dừng và ý nghĩa của tốc độ baud.
Internet vạn vật (IoT)4 phút đọc
Cơ bảnRS-485 truyền tín hiệu vi sai ra sao?
RS-485 gửi tín hiệu qua hai dây và so sánh hiệu điện áp giữa chúng nên chịu nhiễu tốt, đi xa và cho nhiều thiết bị dùng chung một đường truyền.
Internet vạn vật (IoT)4 phút đọc
Cơ bảnModbus RTU hỏi và trả lời dữ liệu như thế nào?
Modbus RTU hoạt động theo kiểu hỏi và đáp giữa master và slave: bài giải thích địa chỉ, mã chức năng, kiểm tra lỗi và khoảng lặng tách khung.
Internet vạn vật (IoT)4 phút đọc
Khởi độngTổng quan: Bo mạch ESP32, Arduino và lựa chọn khác
Tổng quan bo ESP32, Arduino và cách chọn theo kết nối, điện áp, nguồn và vi điều khiển.
Internet vạn vật (IoT)4 phút đọc
Nguồn
Các nguồn này viết cho người đọc lớn hơn. Nếu thấy khó, hãy đọc cùng người lớn.
- GPIO and RTC GPIO (ESP-IDF Programming Guide)(mở trong thẻ mới)
Espressif SystemsBậc C: nguồn khácĐọc ngày 29 tháng 10, 2026
- Pulse Counter (PCNT) (ESP-IDF Programming Guide)(mở trong thẻ mới)
Espressif SystemsBậc C: nguồn khácĐọc ngày 29 tháng 10, 2026
- Pull-up Resistors(mở trong thẻ mới)
SparkFun ElectronicsBậc C: nguồn khácĐọc ngày 29 tháng 10, 2026
