Lập trình STM32 – Cài đặt IDE và chương trình đầu tiên BlinkLed

Cài đặt IDE - Viết chương trình đầu tiên

Phần mềm

Để bắt đầu vào làm việc với dòng STM32, ngoài công cụ hỗ trợ cấu hình là STM32CubeMX thì còn có phần mềm lập trình và biên dịch nữa.

Các phần mềm hỗ trợ viết code và biên dịch nổi tiếng như Keil C, IAR, Cocos Code IDE… (Các bạn có thể dễ dàng tìm và tải về các phiên bản cũ mới của các phần mềm này trên Internet – Hiện tôi dùng Keil C ver 5).

 

Phần cứng

Hiện tại phần cứng của tôi gồm có:

Mạch nạp ST-Link v2 – tải về Driver.

Mạch nạp ST-Link v2

 

STM32F103RCT6 Development Board

ARM Cortex M3 STM32F103RBT6 MINI Development Board

 

Nối mạch nạp với board phát triển thông qua 4 dây: Vcc, GND, SWCLK, SWDIO

Trong đó SWCLK nối đến PA13, SWDIO nối đến PA14. (Tham khảo tại STM32F_Datasheet trang 35)

Tải về Sơ đồ nguyên lý Board STM32F103R.

 

Test chương trình đầu tiên – Blink Led

Khởi động STM32CubeMX, cấu hình lựa chọn MCU STM32F103RCT6, chọn chế độ GPIO Output cho 3 chân PB0, PB1, PB2.

Cấu hình chân MCU

Xuất mã nguồn sau khi cấu hình từ STM32CubeMX với tùy chọn xuất ra Project cho Keil C v5. Trong folder xuất ra đã bao gồm các API cần thiết, phần lõi, các thư viện liên quan.

Ta được Folder như dưới đây.

Thư mục chứa Project

File TestGPIO.uvprojx là file Project của Keil C, doubleclick vào file này để bắt đầu mở project này bằng chương trình Keil C. Sau khi project đã được load thì bạn cũng không cần phải làm gì khác ngoài việc code và nhấn nút biên dịch – nạp.

Chương trình Keil C mở lên có giao diện như hình sau:

Mở project với KeilC

Mã nguồn chúng ta sẽ viết tại file main.c này.

Tại đây chúng ta có thể thấy, toàn bộ quá trình khởi tạo ngoại vi đã được phần mềm tự động hóa làm hết, chúng ta chỉ việc bắt tay vào viết code cho chương trình.

Code chương trình nhấp nháy 3 led tại PB0, PB1, PB2:

Có nhiều cách để tạo ra 1 khoảng thời gian trễ bằng cách dùng vòng lặp, hoặc được hỗ trợ trực tiếp từ firmware bằng hàm:

Và đảo trạng thái của chân GPIO sau một khoảng thời gian định sẵn, việc đảo trạng thái được thực hiện bằng:

Nhìn câu lệnh rất dễ hiểu đúng không?

  • HAL_GPIO_TogglePin – hàm đảo trạng thái.
  • GPIOB – Thực hiện trên  Port B
  • GPIO_PIN_x – Các chân cụ thể trong Port

GPIO trên STM32 được hỗ trợ từ firmware bởi thư viện stm32f1xx_hal_gpio thông qua các hàm trừu tượng với các tham số đi kèm:

  • HAL_GPIO_Init() – Khởi tạo ngoại vi là IO
  • HAL_GPIO_LockPin() – Khóa chức năng của chân MCU.
  • HAL_GPIO_ReadPin() – Đọc trạng thái chân MCU.
  • HAL_GPIO_TogglePin() – Đảo trạng thái tại chân MCU.
  • HAL_GPIO_WritePin() – Ghi trạng thái ra chân MCU.

Các bạn có thể tham khảo nhanh các hàm và các tham số cần thiết được hỗ trợ bởi firmware bằng cách click chọn thẻ Functions trong khung phần mềm Keil C.

Chi tiết các hàm hỗ trợ

Trong quá trình viết code, nếu không nhớ rõ lệnh thì Keil C cũng hỗ trợ nhắc lệnh thông qua tổ hợp phím Ctrl+Space.

Build and Compile

Để Build thì nhấn nút có đánh dấu màu xanh lá cây, nhấn nút đánh đấu đỏ để biên dịch và nạp chương trình cho MCU.

Leave a Reply

Be the First to Comment!

Notify of
avatar
wpDiscuz