GPIO LÀ GÌ

General-purpose Input/Output đầu ra (GPIO) vô cùng thịnh hành, là 1 trong những tác dụng ngoại vi cơ bản của các vi tinh chỉnh, bao hàm những chân đầu vào và chân đầu ra, hoàn toàn có thể được tinh chỉnh vì người dùng. Nó tựa như với những dòng vi điều khiển 8 bit nhỏng AVR và PIC. Tuy nhiên. đều cái vi điều khiển và tinh chỉnh 8bit, chỉ bao gồm 8 chân IO bên trên 1 port thì ở những vi tinh chỉnh và điều khiển 32bit, tất cả mang lại 16 chân IO trên 1 port. Cụ thể so với chip STM32F103C8Tx có gồm 3 Port bao gồm đó là GPIOA, GPIOB, GPIOC. Trong đó, GPIOA, GPIOB bên trên kit thì có đầy đủ 16 chân GPIO, GPIOC 3 chân và GPIOD gồm 2 chân. 

Cấu trúc 1 bàn chân GPIO của Vi tinh chỉnh và điều khiển STM32F103C8T6: 


*

Có 2 khối hận điều khiển và tinh chỉnh khác nhau (khung hình nét đứt):

– Input

– Output đầu ra và các điều khiển và tinh chỉnh đầu ra output khác

Chức năng của GPIO bao gồm:


*

1/ GPIO Input:

Sơ lược qua kết cấu phần cứng và kân hận điều khiển input:


*

2/ Các thanh hao ghi dữ liệu:

Input Data Register (IDR): Nhận nấc biểu thị trên chân IO, trải qua vấn đề hiểu thanh ghi GPIOx_IDR thì bạn có thể gọi được tâm trạng nút “1” xuất xắc nút “0” của bàn chân kia tại Port tương ứng.quý khách hàng đang xem: Gpio là gì

khi thông số kỹ thuật các chân sinh hoạt Port tương xứng bao gồm tác dụng Input thì các thanh ghi tài liệu đầu ra (Output đầu ra data register) đã tự động bị khóa lại do chân đó đã được khai báo là Input. Trong thời điểm này, họ chỉ được phxay hiểu tài liệu trường đoản cú tkhô hanh ghi Input Data Register để tìm hiểu tinh thần của chân trên port đó chứ không hề được phxay ghi.

Bạn đang xem: Gpio là gì


*

3/ TTL Schmitt Trigger:

Quá trình hiểu sườn biểu thị Input thường bị ảnh hưởng vày 2 hiện tại tượng:

– Nhiễu

– Tốc độ biến đổi bộc lộ chậm

Khi cấu hình chân sống Port khớp ứng là Input thì khối TTL Schmitt Trigger sẽ tiến hành nối với chân trang bị lý. Cơ chế của mạch tích vừa lòng TTL Schemitt Trigger này mục tiêu dùng làm Khi nó đón nhận điện áp Vin, nó giúp bọn họ rõ ràng được biểu đạt bởi ngưỡng VT đó nhằm quyết định ngõ ra Vout là cao tốt thấp. Với thiết kế TTL Schmitt Trigger giúp họ chống nhiễu đầu vào giỏi hơn ở phía bên trong vi tinh chỉnh và điều khiển. Chi ngày tiết về TTL Schmitt Trigger các bạn xem thêm tại đây.


*

4/ Điện trở kéo:

khi thông số kỹ thuật chân ở Port tương ứng gồm công dụng Input, thì trên chân đó bạn cũng có thể chọn điện trsống để định nút năng lượng điện áp trước trên chân sẽ là nấc “1” tuyệt nút “0”, hoàn toàn có thể điện thoại tư vấn là năng lượng điện trlàm việc pull up (kéo nguồn) hoặc năng lượng điện trở pull down (kéo đất). Nếu không thông số kỹ thuật mang đến nó kéo mối cung cấp giỏi kéo khu đất thì chân IO đã sống điện áp thả nổi nằm trong lòng mức “1” cùng nút “0” (Input floating).


Lựa chọn chân bên trên kit STM32F103C8T6:

Quan gần cạnh bên trên kit STM32F103C8T6, hiện giờ không tồn tại nút ít thừa nhận như thế nào sẵn trên board buộc phải bản thân vẫn thực hiện một nút thừa nhận nghỉ ngơi ngoài cắm vào và chân gọi nút ít dìm là chân PA0, các bạn cũng có thể lựa chọn tương tự bản thân hoặc đổi chân khác. Ngoài ra nghỉ ngơi Port C chân máy 13, bên trên kit vẫn layout sẵn một đèn led, họ đã áp dụng đèn led này để thực hành thực tế nhận nút ít thì led đảo tâm trạng.

Xem thêm: Adobe Air Là Gì - Tổng Quan Về Adobe Air

Cấu hình bên trên CubeMX:

Cách 1:

Mngơi nghỉ CubeMX Chọn chip STM32F103C8T6

Cách 2:

Bắt đầu project

Bước 3:

Cài đặt Serial wire nhằm hấp thụ code theo chuẩn SWDIO-SWCLK

Bước 4:

Click chuột đề xuất vào chân PC13 Chọn vào ô GPIO_Output

Cách 5:

Cliông xã chuột cần vào chân PA0 Chọn ô GPIO_Input

Cách 6:

Cấu hình các chân GPIO Chọn configuration

Bước 7:

GPIO output level: “LOW” (Trạng thái lúc đầu của led cùng sẽ tiến hành kích Lúc xuất mức “0” tại chân IO)GPIO mode: “đầu ra push-pull”Maximum output speed: Đối cùng với những dòng vi tinh chỉnh và điều khiển bao gồm tốc độ cách xử lý nhanh hao từ vài ba chục MHz trlàm việc lên, thì chúng ta yêu cầu knhị báo tốc độ dao động tại chân đó để đáp ứng với vận tốc xử lý của vi tinh chỉnh và điều khiển. Hiện tại, chúng ta đang áp dụng nguồn giao động nội cùng với tốc độ là 8MHz đề nghị tại đây vẫn chọn “LOW”

Cách 8:

GPIO Mode: Input modeGPIO Pull-up/Pull-down: Pull-up

Tại trên đây bản thân vẫn kéo trsinh hoạt nguồn, định nấc ban sơ đến chân PA0 là nấc “1”. Nút dấn sẽ được nối cùng với GND để khi nhấn nút thì chân PA0 sẽ bị kéo xuống mức “0”, Khi nhận biết PA0 ở tại mức “0” thì ta đã đảo tinh thần led PC13.

Cách 9:

Setting project với sinh code

Đặt tên project cùng nguyên lý thực hiện nhằm lập trình

Click vào Code Generator sau đó chọn xào luộc những tlỗi viện cần thiết kế tiếp thì sinc code cùng mlàm việc project bên keilC lên

Cách 11:

Clichồng vào Function quan lại giáp các hàm đang sử dụng trong bài xích này.

Cách 12:

Ở trên đây họ đã sử dụng hàm:

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) để phát âm trạng thái của đôi bàn chân tại Port tương xứng. Hàm này đang trả về giá trị: 1 hoặc 0 tương ứng cùng với tinh thần của những chân vẫn cấu hìnhGPIO_TypeDef *GPIOx: Tđê mê số này ta đang truyền vào Port A của bàn chân nút ít dìm là GPIOAuint16_t GPIO_Pin: Tđê mê số này ta vẫn truyền vào chân nút dấn PA0 là GPIO_PIN_0

Bước 13:

Ở trong vòng while(1) bọn họ vẫn bình chọn liên tục tinh thần của đôi bàn chân PA0, giả dụ nó ở tầm mức “0” thì thỏa mãn nhu cầu điều kiện if và thực hiện những lệnh trong các số ấy.

Cách 14:

Sử dụng while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0); để chống nhiễu đến nút dìm, chờ đến lúc bọn họ thả tay ra khỏi nút ít thì thời điểm đấy mới đổi tâm trạng của led PC13