General-purpose Input/Output (GPIO) khôn cùng thông dụng, là 1 trong những chức năng nước ngoài vi cơ phiên bản của những vi điều khiển và tinh chỉnh, bao gồm các chân đầu vào với chân cổng output, hoàn toàn có thể được tinh chỉnh vì người dùng. Nó giống như với những mẫu vi tinh chỉnh và điều khiển 8 bit nhỏng AVR với PIC. Tuy nhiên. rất nhiều loại vi điều khiển và tinh chỉnh 8bit, chỉ có 8 chân IO trên 1 port thì sinh sống những vi tinh chỉnh và điều khiển 32bit, có cho 16 chân IO bên trên 1 port. Cụ thể đối với chip STM32F103C8Tx gồm có 3 Port thiết yếu chính là GPIOA, GPIOB, GPIOC. Trong số đó, GPIOA, GPIOB bên trên kit thì tất cả đủ 16 chân GPIO, GPIOC 3 chân cùng GPIOD gồm 2 chân. 

Cấu trúc một bàn chân GPIO của Vi điều khiển STM32F103C8T6: 


*

Có 2 kân hận điều khiển không giống nhau (khung người nét đứt):

– Input

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

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


*

1/ GPIO Input:

Sơ lược qua cấu trúc phần cứng và khối hận điều khiển và tinh chỉnh input:


*

2/ Các tkhô cứng ghi dữ liệu:

Input Data Register (IDR): Nhận mức tín hiệu tại chân IO, thông qua Việc hiểu thanh hao ghi GPIOx_IDR thì chúng ta có thể phát âm được tâm lý mức “1” tuyệt nút “0” của đôi bàn chân đó tại Port tương xứng.Bạn sẽ xem: Gpio là gì

Lúc cấu hình các chân ngơi nghỉ Port tương ứng gồm tính năng Input thì các thanh khô ghi dữ liệu Output đầu ra (đầu ra data register) đang tự động bị khóa lại vì chưng chân đó đã được knhị báo là Input. Hiện giờ, họ chỉ được phnghiền hiểu tài liệu từ tkhô hanh ghi Input Data Register để biết tâm trạng của cẳng chân trên port kia chứ không cần được phxay ghi.

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


*

3/ TTL Schmitt Trigger:

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

– Nhiễu

– Tốc độ đổi khác bộc lộ chậm

Lúc cấu hình chân ở Port tương ứng là Input thì khối TTL Schmitt Trigger sẽ tiến hành nối cùng với chân đồ vật 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ó đón nhận điện áp Vin, nó góp họ biệt lập được bộc lộ bằng ngưỡng VT kia nhằm quyết định ngõ ra Vout là cao tốt tốt. Với kiến tạo TTL Schmitt Trigger giúp bọn họ chống nhiễu nguồn vào tốt hơn làm việc bên trong vi điều khiển. Chi huyết về TTL Schmitt Trigger các bạn tìm hiểu thêm tại phía trên.


*

4/ Điện trsinh sống kéo:

khi thông số kỹ thuật chân sinh sống Port tương xứng có tính năng Input, thì tại chân đó chúng ta cũng có thể lựa chọn năng lượng điện trlàm việc nhằm định nấc năng lượng điện áp trước trên chân đó là mức “1” xuất xắc mức “0”, hoàn toàn có thể Điện thoại tư vấn là điện trsinh hoạt pull up (kéo nguồn) hoặc điện trngơi nghỉ pull down (kéo đất). Nếu không cấu hình mang đến nó kéo mối cung cấp tuyệt kéo khu đất thì chân IO sẽ ngơi nghỉ điện áp thả nổi nằm trong lòng mức “1” và nút “0” (Input floating).


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

Quan giáp bên trên kit STM32F103C8T6, hiện giờ không có nút ít thừa nhận nào sẵn trên board đề nghị bản thân sẽ thực hiện một nút nhấn sinh sống ngoài cắn vào và chân gọi nút ít thừa nhận là chân PA0, các chúng ta cũng có thể lựa chọn kiểu như bản thân hoặc đổi chân khác. Dường như ngơi nghỉ Port C chân đồ vật 13, bên trên kit vẫn layout sẵn một đèn led, chúng ta vẫn sử dụng đèn led này nhằm thực hành thực tế dấn nút thì led hòn đảo tâm trạng.

Xem thêm:

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

Bước 1:

Mở CubeMX Chọn chip STM32F103C8T6

Cách 2:

Bắt đầu project

Bước 3:

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

Cách 4:

Cliông xã con chuột buộc phải vào chân PC13 Chọn vào ô GPIO_Output

Cách 5:

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

Bước 6:

Cấu hình những 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ẽ được kích Lúc xuất nút “0” trên chân IO)GPIO mode: “Output push-pull”Maximum output speed: Đối với những mẫu vi tinh chỉnh bao gồm tốc độ giải pháp xử lý nkhô nóng từ vài ba chục MHz trsinh hoạt lên, thì chúng ta nên khai báo vận tốc dao động tại chân kia nhằm đáp ứng cùng với tốc độ xử lý của vi điều khiển và tinh chỉnh. Lúc Này, họ sẽ sử dụng nguồn dao động nội cùng với vận tốc là 8MHz đề xuất tại đây vẫn lựa chọn “LOW”

Bước 8:

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

Ở trên đây bản thân đang kéo trsinh sống nguồn, định nấc thuở đầu mang đến chân PA0 là nấc “1”. Nút dấn sẽ được nối với GND nhằm Lúc dấn nút ít thì chân PA0 sẽ ảnh hưởng kéo xuống đến mức “0”, Khi phân biệt PA0 ở tại mức “0” thì ta đã đảo tinh thần led PC13.

Bước 9:

Setting project và sinc code

Đặt tên project và hình thức sử dụng để lập trình

Cliông xã vào Code Generator tiếp đến chọn xào nấu những thư viện quan trọng kế tiếp thì sinch code và mở project bên keilC lên

Bước 11:

Cliông chồng vào Function quan tiền gần kề những hàm sẽ áp dụng vào bài bác này.

Bước 12:

Tại đây bọn họ đã dùng hàm:

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

Cách 13:

Ở trong khoảng while(1) họ vẫn kiểm soát liên tiếp tâm lý của cẳng chân PA0, ví như nó ở tại mức “0” thì thỏa mãn nhu cầu điều kiện if và triển khai những lệnh trong các số đó.

Cách 14:

Sử dụng while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0); nhằm chống nhiễu mang đến nút ít dìm, ngóng đến lúc chúng ta thả tay thoát ra khỏi nút thì thời gian đấy mới thay đổi tâm trạng của led PC13

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *