General-purpose Input/đầu ra (GPIO) hết sức phổ biến, là 1 trong những chức năng nước ngoài vi cơ phiên bản của những vi tinh chỉnh, bao hàm các chân đầu vào cùng chân đầu ra, rất có thể được tinh chỉnh bởi 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 nlỗi AVR với PIC. Tuy nhiên. hồ hết chiếc vi tinh chỉnh và điều khiển 8bit, chỉ có 8 chân IO trên 1 port thì ngơi nghỉ những vi điều khiển 32bit, gồm đến 16 chân IO trên 1 port. Cụ thể so với chip STM32F103C8Tx có tất cả 3 Port bao gồm 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 và GPIOD bao gồm 2 chân.
Cấu trúc 1 chân GPIO của Vi điều khiển STM32F103C8T6:

Có 2 khối hận điều khiển khác nhau (khung người đường nét đứt):
– Input
– Output với những tinh chỉnh và điều khiển cổng đầu ra khác
Chức năng của GPIO bao gồm:

1/ GPIO Input:
Sơ lược qua cấu trúc Hartware với kân hận điều khiển input:

2/ Các tkhô hanh ghi dữ liệu:
Input Data Register (IDR): Nhận nút biểu đạt trên chân IO, thông qua câu hỏi hiểu tkhô nóng ghi GPIOx_IDR thì bạn cũng có thể gọi được tâm lý nấc “1” hay nấc “0” của bàn chân kia tại Port khớp ứng.
Bạn đang xem: Bài 1 : lập trình cơ bản raspberry pi với gpio
lúc cấu hình những chân làm việc Port tương xứng bao gồm chức năng Input thì những tkhô cứng ghi dữ liệu Output đầu ra (Output data register) sẽ tự động bị khóa lại vì chưng chân đó đã được knhì báo là Input. Hiện nay, bọn họ chỉ được phép đọc tài liệu trường đoản cú tkhô nóng ghi Input Data Register để biết tinh thần của bàn chân trên port kia chứ không cần được phxay ghi.

3/ TTL Schmitt Trigger:
Quá trình hiểu sườn biểu hiện Input hay bị tác động vị 2 hiện tại tượng:
– Nhiễu
– Tốc độ thay đổi biểu thị chậm
lúc thông số kỹ thuật chân làm việc Port tương ứng là Input thì khối TTL Schmitt Trigger sẽ được nối cùng với chân vật lý. Cơ chế của mạch tích phù hợp TTL Schemitt Trigger này mục đích dùng để Khi nó mừng đón năng lượng điện áp Vin, nó góp họ phân minh được biểu đạt bởi ngưỡng VT đó nhằm đưa ra quyết định ngõ ra Vout là cao xuất xắc thấp. Với thiết kế TTL Schmitt Trigger giúp chúng ta chống nhiễu đầu vào giỏi hơn sống bên trong vi điều khiển. Chi máu về TTL Schmitt Trigger các bạn xem thêm tại trên đây.

4/ Điện trsống kéo:
khi cấu hình chân ngơi nghỉ Port tương ứng gồm công dụng Input, thì trên chân kia chúng ta cũng có thể lựa chọn điện trngơi nghỉ để định nấc năng lượng điện áp trước trên chân đó là nấc “1” xuất xắc nấc “0”, hoàn toàn có thể Điện thoại tư vấn là điện trsinh sống pull up (kéo nguồn) hoặc năng lượng điện trsinh sống pull down (kéo đất). Nếu ko cấu hình cho nó kéo nguồn tuyệt kéo đất thì chân IO đang sinh sống năng lượng điện áp thả nổi nằm trong lòng mức “1” với nút “0” (Input floating).


Trong chỉ dẫn này, họ đã thực hiện CubeMX nhằm sinc code và lập trình sẵn bên trên môi trường xung quanh KeilC-V5. Khi sinh code, bọn họ vẫn làm việc dựa vào lớp tlỗi viện HAL-Hardware Abstraction Layer. Thỏng viện này được sản xuất dựa vào các thư viện tiêu chuẩn (Std) của STM32, để tiếp cận được nhanh lẹ dòng vi điều khiển này thì họ sẽ không đi thừa sâu vào thanh hao ghi GPIOx_IDR(Input data register). Mà thực hiện phần mềm CubeMX để sinch code với sử dụng những hàm GPIO bao gồm sẵn vào tlỗi viện HAL.
Xem thêm: Working - Disneys Hercules
Lựa lựa chọn chân bên trên kit STM32F103C8T6:
Quan gần kề bên trên kit STM32F103C8T6, hiện giờ không tồn tại nút nhận làm sao sẵn trên board đề xuất bản thân vẫn áp dụng một nút ít dấn nghỉ ngơi ngoài gặm vào cùng chân hiểu nút dấn là chân PA0, những bạn cũng có thể lựa chọn tương đương bản thân hoặc thay đổi chân không giống. Ngoài ra sinh hoạt Port C chân lắp thêm 13, trên kit sẽ layout sẵn một đèn led, bọn họ sẽ áp dụng đèn led này nhằm thực hành thực tế dấn nút ít thì led hòn đảo tâm trạng.
Cấu hình trên CubeMX:
Bước 1:
Mở CubeMX Chọn chip STM32F103C8T6Cách 2:
Bắt đầu project
Cách 3:
Cài đặt Serial wire nhằm hấp thụ code theo chuẩn SWDIO-SWCLK
Bước 4:
Cliông chồng chuột đề xuất vào chân PC13 Chọn vào ô GPIO_OutputCách 5:
Cliông xã loài chuột đề xuất vào chân PA0 Chọn ô GPIO_InputBước 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 và sẽ tiến hành kích lúc xuất mức “0” tại chân IO)GPIO mode: “Output push-pull”Maximum output speed: Đối với những mẫu vi điều khiển gồm vận tốc giải pháp xử lý nhanh trường đoản cú vài chục MHz trsống lên, thì họ đề nghị khai báo tốc độ giao động tại chân đó để đáp ứng cùng với tốc độ xử trí của vi điều khiển. Bây Giờ, bọn họ đang thực hiện nguồn xê dịch nội cùng với tốc độ là 8MHz đề nghị ở đây đang lựa chọn “LOW”Bước 8:
GPIO Mode: Input modeGPIO Pull-up/Pull-down: Pull-upTại trên đây bản thân đang kéo trlàm việc mối cung cấp, định nút ban đầu mang lại chân PA0 là nút “1”. Nút nhận sẽ tiến hành nối với GND để Khi thừa nhận nút thì chân PA0 sẽ ảnh hưởng kéo xuống mức “0”, Lúc nhận biết PA0 ở tầm mức “0” thì ta vẫn đảo tâm trạng led PC13.
Bước 9:
Setting project và sinh code
Đặt thương hiệu project cùng mức sử dụng sử dụng để lập trìnhClick vào Code Generator tiếp đến lựa chọn sao chép các thư viện quan trọng sau đó thì sinc code cùng msinh sống project mặt keilC lênBước 11:
Click vào Function quan tiền gần kề các hàm đang thực hiện trong bài xích này.
Cách 12:
Ở đây họ vẫn cần sử dụng hàm:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) để hiểu trạng thái của cẳng chân trên Port khớp ứng. Hàm này vẫn trả về giá bán trị: 1 hoặc 0 tương ứng cùng với tinh thần của các chân vẫn 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: Tsi mê số này ta sẽ truyền vào chân nút nhận PA0 là GPIO_PIN_0Cách 13:
Ở trong tầm while(1) họ sẽ kiểm soát tiếp tục tâm trạng của bàn chân PA0, trường hợp nó ở mức “0” thì thỏa mãn điều kiện if và thực hiện những lệnh trong đó.
Cách 14:
Sử dụng while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==0); để phòng nhiễu đến nút ít thừa nhận, hóng cho đến khi bọn họ thả tay ra khỏi nút thì cơ hội đấy new thay đổi tâm trạng của led PC13