Skip to content

Latest commit

 

History

History
105 lines (101 loc) · 5.11 KB

README.md

File metadata and controls

105 lines (101 loc) · 5.11 KB

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.


Bước 1: Tải thư viện SDK_1.0.3_NUCLEO-F401RE và lưu trữ ở thư mục dễ tìm


Bước 2: Tạo project bằng phần mềm STM32CubeIDE


Bước 3: Thêm thư viện SDK_1.0.3_NUCLEO-F401RE vào project vừa tạo theo chỉ dẫn sau:


+ 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

Bước 5: Thêm các thư viện "stm32f401re gpio.h", "stm32f401re_rcc.h" bằng câu lệnh #include.


Bước 6: Định nghĩa các macro với tên gọi dễ nhớ giúp bạn dễ dàng trong khi bạn viết chương trình



![Kết quả](https://user-images.githubusercontent.com/117442476/224863377-373c01ba-6f22-4fb7-810e-0313f99106cc.png)

Bước 7: Cấu hình chân PA5 của led trên Board STM32 ở chế độ output.


● 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

Kết quả


Bước 8: Cấu hình chân PC13 của nút nhấn trên Board STM32F401 ở chế độ input.


● 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.

![Kết quả](https://user-images.githubusercontent.com/117442476/224864440-026fcb00-fd2e-4a59-8aca-d01d56380933.png)


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.

![Kết quả](https://user-images.githubusercontent.com/117442476/224864461-0c38f0da-19d1-4a29-9cea-491b40bd6c9c.png)


Bước 10: Xây dựng hàm đọc giá trị nút ấn:


● 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.

Kết quả


Bước 11: Trong hàm while(1), thực hiện thuật toán đảo trạng thái led khi được ấn nút



Kết quả