Hướng dẫn sử dụng STM32CubeMX và Keil C để lập trình STM32

Phần mềm STM32CubeMX là một phần mềm hỗ trợ việc cấu hình các chức năng cho các dòng vi điều khiển STM32 thông qua giao diện đồ họa và tạo ra code từ các cấu hình đó. Keil C IDE là một môi trường phát triển tích hợp giúp chúng ta có thể viết code, compile, debugs, nạp chương trình xuống vi điều khiển. Bài viết này hướng dẫn cho những bạn mới bắt đầu tìm hiểu dòng vi điều khiển STM32 cách tiếp cận và sử dụng 2 phần mềm này.

[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]

1. Giao diện khi khởi động STM32CubeMX

Tại giao diện này các bạn có thể:

  • Tạo 1 Project mới: File -> New Project hoặc nhấn vào ACCESS TO MCU SELECTOR nếu bạn lập trình 1 MCU STM32 bất kỳ, hoặc nhấn vào ACCESS TO BOARD SELECTOR nếu bạn lập trình trên 1 board phát triển của hãng STM32.
  • Mở project gần đây: tại mục Recent Opened Project nhấn vào tên project bạn đã mở gần đây.
  • Mở 1 project bất kỳ: tại mục Other Project, bấm vào biểu tượng duyệt thư mục hoặc File -> Load Project.

2. Tạo 1 project mới

Sau khi nhấn vào File -> New Project thì giao diện chọn vi điều khiển STM32 sẽ hiện ra:

  • Chọn vi điều khiển: tại mục Part Number Search các bạn nhập vào tên vi điều khiển mà mình muốn cấu hình (ví dụ vi điều khiển STM32F103C8 được sử dụng trong khóa học lập trình STM32 của TAPIT)
  • Bắt đầu Project: nhấn vào Start Project

Bên cạnh đó, các bạn cũng có thể lọc vi điều khiển theo các thông số như giá tiền (cost), số chân nhập xuất (IO), bộ nhớ chương trình (Flash, Eeprom), bộ nhớ dữ liệu (Ram), tốc độ tối đa CPU (Freq.) tại mục MCU Filters. Sau khi chọn xong vi điều khiển, các bạn có thể đọc thêm mô tả các tính năng (Features), sơ đồ khối (Block Diagram), các tài liệu của hãng (Dos &Resources) hoặc tải về Datasheet để đọc.

3. Các cấu hình

Tại mục Pinout & Configuration:

  • Cấu hình nạp code: Các bạn chọn System Core -> SYS -> Debug: Serial Wire để vi điều khiển được cấu hình nạp code thông qua chân SWDIO và SWCLK (chúng ta sử dụng mạch nạp ST- Link và kết nối với vi điều khiển STM32F103C8T6 thông qua các chân này).

  • Cấu hình các ngoại vi: Việc cấu hình các ngoại vi như INPUT, INPUT, External Interrupt, ADC, TIMER, UART… có thể được thực hiện bằng cách chuột phải để chọn chân trực tiếp và kích chuột trái vào chân mà mình muốn cài đặt. Ví dụ : cài đặt chân PC13 hoạt động với chức năng OUTPUT (bạn có thể phóng to/thu nhỏ hình ảnh vi điều khiển bằng cách lăn chuột giữa).

Ngoài ra, các bạn cũng có thể cấu hình các ngoại vi khác tại các mục: System Core, Analog, Timers, Connectivity…

Tại mục Clock Configuration: Các bạn cấu hình lựa chọn nguồn tạo dao động và tần số hoạt động cho vi điều khiển (Bộ xử lý trung tâm – CPU và Peripherals – các ngoại vi) thông qua Clock tree. (Kết hợp với cấu hình RCC tại System Core)

4. Lưu thông tin Project và sinh code

Tại Project Manager các bạn đặt tên Project, nơi lưu trữ (lưu ý không sử dụng Tiếng Việt có dấu), và chọn Toolchain /IDE là MDK-ARM V5 nếu các bạn sử dụng Keil C IDE để code và debug. Sau khi cấu hình xong, các bạn bấm vào GENERATE CODE để sinh code. Sau khi đã sinh code thì sẽ có thông báo các bạn Open Project. Lúc này Project sẽ được mở lên ở phần mềm Keil C với đầy đủ các cấu hình mà bạn đã thực hiện.

 

5. Các thao tác với Keil C
Sau khi cấu hình, sinh code từ phần mềm STM32CubeMX và mở Project Keil C, các bạn mở file main.c tại mục Application/User.
Có các biểu tượng
Build (F7) để compile chương trình và Load (F8) để nạp chương trình.

Một số lưu ý khi nạp chương trình:

Các bạn nhấn vào biểu tượng Option for Target hoặc Project -> Option for Target để thực hiện 1 số cấu hình:

Tại cửa sổ Option for Target, các bạn chọn thẻ Debug và tick chọn Use ST-Link Debugger, để nạp chương trình xuống kit (nếu chọn Use Simulator thì sẽ ở chế độ mô phỏng).
Nhấn vào
Settings tại Use: ST-Link Debugger, cửa sổ Cortex-M Target Driver Setup, các bạn chọn thẻ Flash Download, tại đây nếu tick chọn Reset and Run thì ngay sau khi nạp, chương trình sẽ chạy ngay. Nếu không tick chọn thì các bạn nạp code xong, nhấn vào nút reset trên board mạch thì chương trình mới chạy.

Xem thêm: Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32 tại đây. Nếu có bất kì thắc mắc gì, hãy để lại bình luận.

Chúc các bạn thành công! 

Nhóm TAPIT ARM R&D