Bai2_GPIO : chương trình đảo trạng thái đầu ra của Buzzer trên Kit mở rộng khi nút ấn trên kit được nhấn nút B5 trên Kit mở rộng STM32F401.
+ Trỏ chuột vào project và ấn chuột phải.
+ Chọn Properties → C/C++ Genaral → Path and Symbols → Source
Location → Link Folder → chọn tích Link to folder in the system → chọn Browse để chọn đến file SDK_1.0.3_NUCLEO-F401RE và nhấn OK.
Bước 4: Sau khi đã thêm thư viện SDK_1.0.3_NUCLEO-F401RE, các bạn cần phải tạo đường dẫn đến thư mục.
+ Trỏ chuột vào project và ấn chuột phải.
+ Chọn Properties → C/C++ Build → Setting → Tool Setting → Include
paths trong MCU GCC Compiler → chọn Add → chọn Workspace… và chọn các đường dẫn sau:
1. SDK_1.0.3_NUCLEO-F401RE/shared/Drivers/CMSIS/Include
2. SDK_1.0.3_NUCLEO-F401RE/shared/Drivers/STM32F401RE_StdPe riph_Driver/inc
3. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/button
4. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/rtos
5. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/serial
6. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/buzzer
7. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/led
8. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/sensor
9. SDK_1.0.3_NUCLEO-F401RE/shared/Middle/ucglib
10. SDK_1.0.3_NUCLEO-F401RE/shared/Utilities
Trong Properties → C/C++ Build → Setting → Tool Setting → Libraries trong MCU GCC Linker → chọn Add… trong Libraries(-l) → viết Libraries và Add… trong Library search paths (-L) thêm đường dẫn sau: SDK_1.0.3_NUCLEO-F401RE\lib_stm
![Kq Bước 6](https://user-images.githubusercontent.com/117442476/224863377-373c01ba-6f22-4fb7-810e-0313f99106cc.png)
● Khai báo biến thuộc kiểu dữ liệu struct GPIO.
● Cấp xung clock hoạt động cho Port A.
● Chọn chân sử dụng với chức năng điều khiển Led.
● Chọn chân điều khiển led ở chế độ Output.
● Tốc độ xử lý trên chân là 50MHz.
● Chọn chế độ là đẩy kéo Push Pull.
● Trạng thái ban đầu trên chân là kéo xuống GND Pull Down.
● Khởi tạo tất cả các giá trị bên trên bằng cách sử dụng hàm GPIO_Init với
đối số truyền vào là GPIOA và GPIO_InitStructure
![image](https://user-images.githubusercontent.com/117442476/224864406-44f37af0-167e-4a63-ae37-5ba6ace81362.png)
● Khai báo biến thuộc kiểu dữ liệu struct GPIO.
● Cấp xung Clock hoạt động cho Port B.
● Chọn chân sử dụng làm chức năng nút ấn.
● Chọn chế độ trên chân GPIO là Input.
● Tốc độ xử lý là 50MHz.
● Trạng thái kéo trở lên nguồn +3.3V (Pull Up).
● Khởi tạo tất cả các giá trị bên trên bằng cách sử dụng hàm GPIO_Init với
đối số truyền vào là GPIOB và GPIO_InitStructure
![image](https://user-images.githubusercontent.com/117442476/224863661-ac79a2aa-7c52-4876-adf2-61e5a58a9af0.png)
![image](https://user-images.githubusercontent.com/117442476/224863806-fa14eb26-1663-468a-b30a-9de999a0f0a8.png)
Bước 11: Trong hàm While(1), thực hiện thuật toán đảo trạng thái Buzzer khi được ấn nút trên Kit mở rộng
![image](https://user-images.githubusercontent.com/117442476/224863868-19b249d6-0293-4f5e-85a2-ffb2055fd07a.png)