Bai1_GPIO : chương trình đảo trạng thái đầu ra của Led trên Board STM32F4 khi nútấn trên Board được nhấn.
+ 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

● 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
● Khai báo biến thuộc kiểu dữ liệu struct GPIO.
● Cấp xung clock cho Port C.
● 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 dương nguồn 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à GPIOC và GPIO_InitStructure.

Bước 9: Xây dựng hàm điều khiển Led với tham số truyền vào là GPIO nào và chân được kết nối để điều khiển led.
● Khi muốn bật led cần ghi mức logic 1 vào bit tương ứng của thanh ghi BSRRL.
● Khi muốn tắt led cần ghi mức logic 1 vào bit tương ứng của thanh ghi BSRRH.

● Muốn đọc trạng thái nút ấn cần dịch bit tương ứng với nút ấn trong thanh ghi IDR về bit số 0.
● Sau đó sử dụng phép toán tử (AND) nhân giá trị sau khi dịch với 0x01 để đọc giá trị trên chân làm chức năng nút ấn.