Lập Trình GPIO: Nhấp Nháy LED Trên STM32F103C8T6
Bên lĩnh vực IT, khi bắt đầu làm quen với một ngôn ngữ lập trình mới, chúng ta thường thấy ví dụ "Hello World", tương tự trong lĩnh vực điện tử, khi làm việc với một vi điều khiển mới, việc nhấp nháy LED chính là bài học đầu tiên. Trong bài viết này, mình sẽ hướng dẫn các bạn cách để nhấp nháy LED 5 lần mỗi giây (tần số f = 5Hz).
I. Linh Kiện Cần Thiết
1. Linh Kiện
- Kit phát triển Blue Pill STM32F103C8T6
- Mạch nạp ST-Link
Khi kết nối hai linh kiện này, bạn chỉ cần nhìn tên của bốn chân trên kit và kết nối chúng với chân tương ứng trên ST-Link. Hãy kiểm tra kết nối hai lần để đảm bảo mọi thứ đúng trước khi nạp code nhé! ⚠️
2. Phần Mềm
- STM32CubeIDE
II. Phân Tích Yêu Cầu
Yêu Cầu | Nghĩa | Công Cụ |
---|---|---|
Nhấp nháy LED | LED bật rồi LED tắt | HAL_GPIO_WritePin() |
Nhấp nháy 5 lần một giây | LED sáng 100ms, tắt 100ms | HAL_Delay() |
Lưu ý: LED được kết nối sẵn trên chân PC13 của kit Blue Pill STM32F103C8T6. Khi thiết lập mức thấp trên chân này, LED sẽ sáng và khi thiết lập mức cao, LED sẽ tắt.
III. Thực Hành
Xem video hướng dẫn để hiểu rõ hơn.
- Mở ứng dụng STM32CubeIDE.
- Tạo project mới: File -> New -> STM32 Project
- Thiết lập cấu hình trên CubeMX:
- Chọn chế độ debug là serial wire.
- Thiết lập chân PC13 là chân output.
- Lưu project bằng tổ hợp phím Ctrl + S và tạo mã nguồn sang CubeIDE.
- Code vào trong phần vòng lặp while(1) của hàm main.
Cách 1:cHAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 0); // Thiết lập mức thấp HAL_Delay(100); // Tạo trễ 100ms HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 1); // Thiết lập mức cao HAL_Delay(100); // Tạo trễ 100ms
cHAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // Đảo trạng thái HAL_Delay(100); // Tạo trễ 100ms
- Nhấp chuột phải vào tên project và build code. Nếu không có lỗi, kết nối ST-Link và nạp code.
Chúc bạn thành công! 😎
IV. Thắc Mắc Thường Gặp
Có thể không sử dụng STM32CubeIDE không?
- Bạn hoàn toàn có thể. Trường mình có một số bạn sử dụng KeilC, một số khác dùng makefile. Tuy nhiên, STM32CubeIDE là phần mềm miễn phí từ hãng và mình thấy nó dễ sử dụng hơn.
Có cần tải STM32CubeMX nếu đã có STM32CubeIDE không?
- Không cần, vì STM32CubeIDE đã tích hợp STM32CubeMX.
Chip fake có vấn đề trong lập trình không?
- Chip fake chất lượng kém sẽ không nạp được trên CubeIDE, trong khi chip fake chất lượng tốt, có chữ chính hãng sẽ nạp được. Bạn có thể mua chip này khoảng 100k hoặc dùng KeilC hoặc ST-Link Utility.
Có nên mua kit hàn sẵn hay kit DIP rời?
- Mình khuyên nên mua kit hàn sẵn. Nếu mua loại DIP rời, bạn cần phải tự hàn và kết nối cho đúng.
Thông Tin Thêm Về Các Hàm
- Bài viết này nhằm mục đích cung cấp kiến thức cơ bản nhanh chóng. Mình sẽ bổ sung thông tin chi tiết về các hàm trong file .md trên GitHub kèm theo mã nguồn sau.
V. Tài Liệu Hữu Ích
- Schematic của kit Blue Pill STM32F103C8T6
- Reference manual
- Datasheet của STM32F103C8T6
- Mô tả về thư viện HAL trên dòng F1
Ghi Chú:
- Bài viết này giúp mình lưu trữ kiến thức và hy vọng sẽ hữu ích cho các bạn.
- Mọi ý kiến đóng góp, phản hồi sẽ được mình ghi nhận và cải thiện.
- Chúc mọi người học tập vui vẻ! 😉
source: viblo