General-purpose Input/Output đầu ra (GPIO) rất phổ biến, là 1 trong những tác dụng ngoại vi cơ phiên bản của các vi điều khiển, bao hàm các chân nguồn vào cùng chân đầu ra, rất có thể được tinh chỉnh và điều khiển do người tiêu dùng. Nó tương tự cùng với các loại vi điều khiển và tinh chỉnh 8 bit như AVR với PIC. Tuy nhiên. hầu như dòng vi điều khiển 8bit, chỉ có 8 chân IO trên 1 port thì ở những vi điều khiển và tinh chỉnh 32bit, có cho 16 chân IO trên 1 port. Cụ thể so với chip STM32F103C8Tx gồm gồm 3 Port thiết yếu chính là GPIOA, GPIOB, GPIOC. Trong số đó, GPIOA, GPIOB trên kit thì tất cả đầy đủ 16 chân GPIO, GPIOC 3 chân với GPIOD có 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 (cơ thể đường nét đứt):
– Input
– Output đầu ra với 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 Hartware với kân hận điều khiển input:

2/ Các tkhô cứng ghi dữ liệu:
Input Data Register (IDR): Nhận mức biểu đạt tại chân IO, trải qua vấn đề phát âm thanh khô ghi GPIOx_IDR thì bạn cũng có thể hiểu được trạng thái nấc “1” giỏi nấc “0” của bàn chân kia tại Port tương ứng.
Bạn đang xem: Gpio là gì
Lúc cấu hình những chân ở Port tương xứng tất cả chức năng Input thì những thanh khô ghi dữ liệu Output (Output data register) đang tự động hóa bị khóa lại bởi chân này đã được knhị báo là Input. Lúc này, họ chỉ được phép gọi dữ liệu từ thanh hao ghi Input Data Register để hiểu tâm trạng của đôi bàn chân tại port đó chứ không được phép ghi.

3/ TTL Schmitt Trigger:
Quá trình phát âm sườn tín hiệu Input thường hay bị ảnh hưởng do 2 hiện nay tượng:
– Nhiễu
– Tốc độ thay đổi tín hiệu chậm
khi cấu hình chân nghỉ ngơi Port tương xứng là Input thì khối TTL Schmitt Trigger sẽ tiến hành nối với chân đồ gia dụng lý. Cơ chế của mạch tích hợp TTL Schemitt Trigger này mục tiêu dùng làm khi nó tiếp nhận điện áp Vin, nó giúp chúng ta biệt lập được dấu hiệu bởi ngưỡng VT đó để ra quyết định ngõ ra Vout là cao giỏi phải chăng. Với thiết kế TTL Schmitt Trigger giúp họ kháng nhiễu nguồn vào tốt rộng ngơi nghỉ bên trong vi tinh chỉnh và điều khiển. Chi tiết về TTL Schmitt Trigger các bạn bài viết liên quan trên phía trên.

4/ Điện trngơi nghỉ kéo:
lúc cấu hình chân ở Port khớp ứng có chức năng Input, thì tại chân kia chúng ta có thể chọn năng lượng điện trsinh hoạt nhằm định mức năng lượng điện áp trước tại chân sẽ là nút “1” hay mức “0”, rất có thể call là điện trlàm việc pull up (kéo nguồn) hoặc năng lượng điện trsinh sống pull down (kéo đất). Nếu không thông số kỹ thuật đến nó kéo nguồn tuyệt kéo đất thì chân IO sẽ sinh sống năng lượng điện áp thả nổi nằm giữa nấc “1” và nút “0” (Input floating).


Trong lí giải này, bọn họ vẫn sử dụng CubeMX để sinh code và lập trình trên môi trường KeilC-V5. Kmất mát code, chúng ta sẽ thao tác làm việc dựa trên lớp thư viện HAL-Hardware Abstraction Layer. Tlỗi viện này được thi công dựa vào các thỏng viện tiêu chuẩn chỉnh (Std) của STM32, nhằm tiếp cận được mau lẹ mẫu vi tinh chỉnh này thì bọn họ sẽ không còn đi vượt sâu vào tkhô nóng ghi GPIOx_IDR(Input data register). Mà áp dụng ứng dụng CubeMX nhằm sinch code cùng áp dụng các hàm GPIO tất cả sẵn vào thỏng viện HAL.
Xem thêm: Tần Số Góc Là Gì ? Tần Số Góc Nghĩa Là Gì
Lựa lựa chọn chân trên kit STM32F103C8T6:
Quan liền kề trên kit STM32F103C8T6, hiện tại không tồn tại nút ít nhận như thế nào sẵn bên trên board nên mình vẫn áp dụng một nút dìm ngơi nghỉ ngoại trừ gặm vào cùng chân hiểu nút dấn là chân PA0, các bạn cũng có thể lựa chọn kiểu như mình hoặc thay đổi chân không giống. Trong khi làm việc Port C chân thứ 13, trên kit vẫn layout sẵn một đèn led, bọn họ vẫn thực hiện đèn led này để thực hành nhấn nút ít thì led đảo trạng thái.
Cấu hình trên CubeMX:
Bước 1:
Msinh sống CubeMX Chọn chip STM32F103C8T6Bước 2:
Bắt đầu project
Cách 3:
Cài đặt Serial wire để hấp thụ code theo chuẩn chỉnh SWDIO-SWCLK
Cách 4:
Cliông xã con chuột phải vào chân PC13 Chọn vào ô GPIO_OutputCách 5:
Click con chuột phải vào chân PA0 Chọn ô GPIO_InputCách 6:
Cấu hình những chân GPIO Chọn configurationBước 7:
GPIO output level: “LOW” (Trạng thái ban đầu của led cùng sẽ được kích lúc xuất nấc “0” tại chân IO)GPIO mode: “đầu ra push-pull”Maximum output speed: Đối với những chiếc vi điều khiển và tinh chỉnh gồm vận tốc cách xử lý nhanh hao từ vài chục MHz trsống lên, thì bọn họ bắt buộc khai báo vận tốc xê dịch tại chân kia nhằm đáp ứng với vận tốc xử lý của vi điều khiển và tinh chỉnh. Bây Giờ, họ đang áp dụng nguồn xê dịch nội cùng với vận tốc là 8MHz nên tại chỗ này sẽ chọn “LOW”Bước 8:
GPIO Mode: Input modeGPIO Pull-up/Pull-down: Pull-upTại đây mình đã kéo trsống mối cung cấp, định mức lúc đầu mang lại chân PA0 là mức “1”. Nút nhận sẽ tiến hành nối với GND để Lúc thừa nhận nút ít thì chân PA0 sẽ bị kéo xuống đến mức “0”, khi nhận thấy PA0 ở mức “0” thì ta vẫn đảo tinh thần led PC13.
Bước 9:
Setting project với sinch code
Đặt thương hiệu project cùng luật sử dụng để lập trìnhClick vào Code Generator kế tiếp lựa chọn xào luộc các thỏng viện cần thiết tiếp nối thì sinc code và mngơi nghỉ project bên keilC lênBước 11:
Cliông chồng vào Function quan tiền ngay cạnh những hàm sẽ thực hiện trong bài này.
Cách 12:
Tại trên đây họ đã dùng hàm:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) nhằm phát âm tâm trạng của đôi bàn chân trên Port tương ứng. Hàm này đang trả về giá trị: 1 hoặc 0 tương xứng với tâm trạng của các chân vẫn cấu hìnhGPIO_TypeDef *GPIOx: Tyêu thích số này ta đang truyền vào Port A của đôi bàn chân nút ít dìm là GPIOAuint16_t GPIO_Pin: Tsi mê số này ta vẫn truyền vào chân nút ít dấn PA0 là GPIO_PIN_0Bước 13:
Ở trong khoảng while(1) họ sẽ đánh giá thường xuyên tinh thần của cẳng chân PA0, nếu nó ở tầm mức “0” thì vừa lòng ĐK if và thực hiện các lệnh trong số đó.
Cách 14:
Sử dụng while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0); để phòng nhiễu cho nút nhấn, ngóng đến lúc chúng ta thả tay thoát ra khỏi nút thì thời điểm đấy bắt đầu thay đổi tâm lý của led PC13