General-purpose Input/Output (GPIO) rất phổ biến, là một công dụng ngoại vi cơ phiên bản của những vi điều khiển, bao hàm các chân đầu vào và chân đầu ra, rất có thể được tinh chỉnh và điều khiển bởi người dùng. Nó giống như với các dòng vi điều khiển và tinh chỉnh 8 bit như AVR và PIC. Mặc dù nhiên. Hầu hết dòng vi tinh chỉnh và điều khiển 8bit, chỉ tất cả 8 chân IO trên 1 port thì ở những vi tinh chỉnh và điều khiển 32bit, gồm đến 16 chân IO trên 1 port. Rõ ràng đối với cpu STM32F103C8Tx gồm tất cả 3 Port chủ yếu đó là GPIOA, GPIOB, GPIOC. Trong đó, GPIOA, GPIOB bên trên kit thì bao gồm đủ 16 chân GPIO, GPIOC 3 chân cùng GPIOD bao 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 điều khiển và tinh chỉnh khác nhau (khung hình nét đứt):

– Input

– Output cùng các điều khiển đầu ra khác

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


*

1/ GPIO Input:

Sơ lược qua cấu tạo phần cứng với khối điều khiển và tinh chỉnh input:


*

2/ những thanh ghi dữ liệu:

Input Data Register (IDR): dìm mức biểu hiện tại chân IO, trải qua việc gọi thanh ghi GPIOx_IDR thì chúng ta cũng có thể đọc được tâm trạng mức “1” giỏi mức “0” của cẳng chân đó tại Port tương ứng.Bạn đã xem: Gpio là gì

Khi cấu hình các chân sống Port tương xứng có công dụng Input thì những thanh ghi tài liệu Output (Output data register) sẽ tự động bị khóa lại vày chân này đã được khai báo là Input. Cơ hội này, họ chỉ được phép đọc dữ liệu từ thanh ghi input Data Register để hiểu trạng thái của cẳng chân tại port đó chứ không hề được phép ghi.

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


*

3/ TTL Schmitt Trigger:

Quá trình phát âm sườn biểu thị Input thường xuyên bị ảnh hưởng bởi 2 hiện tại tượng:

– Nhiễu

– Tốc độ đổi khác tín hiệu chậm

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


*

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

Khi thông số kỹ thuật chân sinh sống Port tương xứng có chức năng Input, thì trên chân đó bạn cũng có thể chọn điện trở để định mức năng lượng điện áp trước tại chân sẽ là mức “1” giỏi mức “0”, có thể gọi là năng lượng điện trở pull up (kéo nguồn) hoặc điện trở pull down (kéo đất). Trường hợp không thông số kỹ thuật cho nó kéo nguồn tốt kéo khu đất thì chân IO đang ở năng lượng điện áp thả nổi nằm giữa mức “1” cùng mức “0” (Input floating).


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

Quan giáp trên kit STM32F103C8T6, hiện tại không có nút dìm nào sẵn bên trên board phải mình sẽ thực hiện một nút nhận ở quanh đó cắm vào với chân đọc nút nhận là chân PA0, các bạn có thể chọn tương đương mình hoặc thay đổi chân khác. Trong khi ở Port C chân máy 13, trên kit đã layout sẵn một đèn led, bọn họ sẽ áp dụng đèn led này để thực hành nhấn nút thì led đảo trạng thái.

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

Bước 1:

Mở CubeMX Chọn chip STM32F103C8T6

Bước 2:

Bắt đầu project

Bước 3:

Cài đặt Serial wire để nạp code theo chuẩn SWDIO-SWCLK

Bước 4:

Click chuột nên vào chân PC13 Chọn vào ô GPIO_Output

Bước 5:

Click chuột buộc phải vào chân PA0 Chọn ô GPIO_Input

Bước 6:

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

Bước 7:

GPIO output đầu ra level: “LOW” (Trạng thái lúc đầu của led và sẽ được kích lúc xuất nấc “0” tại chân IO)GPIO mode: “Output push-pull”Maximum output đầu ra speed: Đối với các dòng vi tinh chỉnh và điều khiển có tốc độ xử lý cấp tốc từ vài chục MHz trở lên, thì bọn họ phải khai báo vận tốc dao rượu cồn tại chân kia để đáp ứng nhu cầu với vận tốc xử lý của vi điều khiển. Hiện nay tại, chúng ta đang thực hiện nguồn xê dịch nội với tốc độ là 8MHz nên tại đây sẽ lựa chọn “LOW”

Bước 8:

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

Ở phía trên mình đã kéo trở nguồn, định mức ban đầu cho chân PA0 là nút “1”. Nút nhấn sẽ tiến hành nối cùng với GND để khi dìm nút thì chân PA0 có khả năng sẽ bị kéo xuống mức “0”, khi nhận ra PA0 tại mức “0” thì ta sẽ đảo trạng thái led PC13.

Bước 9:

Setting project với sinh code

Đặt tên project với công cụ sử dụng để lập trình

Click vào Code Generator sau đó chọn xào luộc các thư viện cần thiết sau đó thì sinh code cùng mở project mặt keilC lên

Bước 11:

Click vào Function quan lại sát các hàm sẽ thực hiện trong bài này.

Xem thêm: Cocos2D X Là Gì - Giới Thiệu Tổng Quan Về Cocos Creator

Bước 12:

Ở đây chúng ta sẽ cần sử dụng hàm:

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) nhằm đọc trạng thái của cẳng chân tại Port tương ứng. Hàm này đã trả về giá chỉ trị: 1 hoặc 0 tương ứng với trạng thái của các chân sẽ cấu hìnhGPIO_TypeDef *GPIOx: tham số này ta đang truyền vào Port A của đôi bàn chân nút nhận là GPIOAuint16_t GPIO_Pin: tham số này ta đã truyền vào chân nút nhận PA0 là GPIO_PIN_0

Bước 13:

Ở trong vòng while(1) bọn họ sẽ kiểm tra thường xuyên trạng thái của chân PA0, nếu nó ở tại mức “0” thì vừa lòng điều kiện if và tiến hành các lệnh trong đó.

Bước 14:

Sử dụng while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0); để phòng nhiễu mang đến nút nhấn, đợi mang lại khi chúng ta thả tay ra khỏi nút thì lúc đấy mới đổi tâm lý của led PC13