CEtut – Part 2: Giới thiệu kiến trúc, phần mềm và môi trường phát triển cho STM32

Trong nội dung bài hướng dẫn này, chúng ta sẽ cùng tìm hiểu về kiến trúc, môi trường và các công cụ phát triển ứng dụng cho STM32. Qua nội dung bài viết này, các bạn sẽ nắm được cách sử dụng các công cụ, môi trường phát triển ứng dụng của STM32, từ đó có thể tự mình setup và lập trình một dự án cho riêng mình
Share

Trong nội dung bài hướng dẫn này, chúng ta sẽ cùng tìm hiểu về kiến trúc, môi trường và các công cụ phát triển ứng dụng cho STM32. Qua nội dung bài viết này, các bạn sẽ nắm được cách sử dụng các công cụ, môi trường phát triển ứng dụng của STM32, từ đó có thể tự mình setup và lập trình một dự án cho riêng mình

1. Kiến trúc vi điều khiển STM32

Trong chuỗi bài viết này, chúng ta sẽ tìm hiểu về cách lập trình điều khiển với mạch vi điều khiển STM32F103C8T6, do vậy, việc tìm hiểu về kiến trúc vi điều khiển này là thực sự cần thiết.

Hình 1. Kiến trúc vi điều khiển STM32F103C8T6

Sơ đồ ở hình 1 mô tả chi tiết các thành phần và kết nối giữa các khối chức năng của vi điều khiển STM32F103C8T6, cung cấp cái nhìn tổng quan về kiến trúc và khả năng của vi điều khiển này trong các ứng dụng nhúng. Các thành phần bao gồm:

  • Bộ vi xử lý (CPU)
    • Cortex-M3 CPU: Đây là bộ vi xử lý chính, hoạt động ở tần số tối đa 72MHz.
    • TPU (Trace Port Unit): Được sử dụng để debug và trace.
  • Bộ nhớ
    • Flash 128 KB: Bộ nhớ Flash 128KB dùng để lưu trữ chương trình.
    • SRAM 20 KB: Bộ nhớ RAM tĩnh 20KB cho lưu trữ tạm thời.
    • SRAM 512B: Bộ nhớ SRAM 512B cho USB.
  • Bộ quản lý nguồn
    • POWER VOLT. REG: Bộ điều chỉnh điện áp từ 3.3V xuống 1.8V.
    • VDDA, VSSA: Nguồn và đất analog.
  • Clock và Reset
    • XTAL OSC 4-16 MHz: Bộ dao động tinh thể từ 4-16 MHz.
    • PLL & CLOCK MANAGT: Bộ quản lý xung nhịp và PLL.
    • RC 8 MHz, RC 40 kHz: Bộ dao động RC với tần số 8 MHz và 40 kHz.
    • Reset: Chân NRST để reset vi điều khiển.
  • Peripherals (Ngoại vi)
    • Timers: Bao gồm TIM1 (16-bit, Advanced), TIM2, TIM3, TIM4 (16-bit General Purpose Timers).
    • USARTs: USART1, USART2, USART3 cho giao tiếp nối tiếp.
    • SPI: SPI1 và SPI2 cho giao tiếp SPI.
    • I2C: I2C1 và I2C2 cho giao tiếp I2C.
    • USB 2.0 FS: Giao tiếp USB 2.0 Full Speed.
    • bxCAN: Giao tiếp CAN bus.
    • ADC: 2 bộ chuyển đổi Analog sang Digital 12-bit, với 4 kênh mỗi bộ.
    • GPIO: Các cổng vào/ra tổng quát PA, PB, PC, PD, PE với tối đa 16 chân mỗi cổng.
    • WWDG, IWDG: Window Watchdog và Independent Watchdog cho giám sát hệ thống.
  • DMA (Direct Memory Access): GP DMA – 7 kênh DMA tổng quát.
  • RTC (Real-Time Clock)
    • RTC AWU: Đồng hồ thời gian thực và bộ báo thức.
    • Backup interface: Giao diện backup cho RTC, có thể dùng pin VBAT để duy trì hoạt động khi mất nguồn chính.
  • Debug: SWJ/JTAG – Giao diện debug JTAG và SWD.

Bộ vi xử lý Arm Cortex-M3

Mạch vi điều khiển STM32F103C8T6 sử dụng CPU ARM Cortex-M3 là một trong những lõi vi xử lý dựa trên kiến trúc ARMv7-M của ARM Holdings được thiết kế đặc biệt cho các ứng dụng nhúng và là lựa chọn phổ biến cho nhiều vi điều khiển và các hệ thống nhúng vì hiệu năng cao và tiêu thụ điện năng thấp. Với mạch vi điều khiển STM32F103C8T6 sử dụng Dưới đây là một số đặc điểm nổi bật của ARM Cortex-M3 bao gồm:

  • Bốn giao thức dẫn truyền dữ liệu rút gọn ưu việt tốc độ cao (Advanced High-
    performance Bus – AHB) – Lite.
  • Bổ sung tập lệnh con của Thumb/Thumb-2.
  • Pipeline 3 tầng.
  • Bộ điều khiển ngắt chồng luồng đã được Vector hóa (Nested Vectored Interrupt
    Controller – NVIC).
  • 8 phân vùng bảo vệ bộ nhớ (Memory Protection Unit – MPU) tùy chọn kèm theo
    các phân vùng đệm con và phần vùng nền.
  • Tập lệnh xử lý trường Bit tích hợp (Integrated Bit-field Processing Instructions).
  • Thao tác Bit ở cấp độ dẫn truyền dữ liệu (Bus Level Bit Banding).
Hình 2. Kiến trúc vi xử lí ARM Cortex-M3

Clock tree

Clock tree của STM32F103C8T6 cho thấy khả năng linh hoạt trong việc chọn lựa và điều chỉnh các nguồn xung nhịp cho các bộ phận khác nhau của hệ thống. Các bộ dao động nội và ngoại cùng với các bộ nhân và chia tần số giúp đảm bảo rằng mỗi thành phần của vi điều khiển có thể hoạt động ở tần số phù hợp nhất, tối ưu hiệu năng và tiết kiệm năng lượng.

Hình 3. Sơ đồ clock tree của vi điều khiển

Sơ đồ clock tree của vi điều khiển STM32F103C8T6 thể hiện cách thức quản lý và phân phối xung nhịp trong hệ thống. Hình 3 mô tả chi tiết các thành phần chính trong sơ đồ này:

  • Các nguồn xung nhịp (Clock Sources)
    • HSI (High-Speed Internal): Bộ dao động RC nội 8 MHz.
    • HSE (High-Speed External): Bộ dao động tinh thể ngoại từ 4-16 MHz.
    • LSI (Low-Speed Internal): Bộ dao động RC nội 40 kHz, dùng cho watchdog độc lập.
    • LSE (Low-Speed External): Bộ dao động tinh thể ngoại 32.768 kHz, thường dùng cho RTC (Real-Time Clock).
  • Bộ nhân và chia tần số (PLL – Phase-Locked Loop): PLL – Có thể chọn nguồn từ HSI hoặc HSE để làm đầu vào và có thể nhân tần số lên đến x16 để đạt được tần số mong muốn.
  • Bộ chọn xung nhịp hệ thống (System Clock Switch)
  • Các bộ chia xung nhịp:
    • AHB Prescaler: Chia tần số từ SYSCLK để tạo xung nhịp cho bus AHB, bộ nhớ và DMA.
    • APB1 Prescaler: Chia tần số từ AHB để tạo xung nhịp cho các ngoại vi trên bus APB1.
    • APB2 Prescaler: Chia tần số từ AHB để tạo xung nhịp cho các ngoại vi trên bus APB2.
    • ADC Prescaler: Chia tần số từ APB2 để tạo xung nhịp cho các ADC.
  • Các ngõ ra xung nhịp:
    • USBCLK: Xung nhịp cho giao tiếp USB, chia từ PLL hoặc HSE.
    • I2S2CLK, I2S3CLK: Xung nhịp cho giao tiếp I2S2 và I2S3.
    • SDIOCLK: Xung nhịp cho giao tiếp SDIO.
    • FSMCCLK: Xung nhịp cho giao tiếp FSMC.
    • TIMxCLK: Xung nhịp cho các bộ đếm thời gian TIM1, TIM2, v.v.
    • ADCCLK: Xung nhịp cho các bộ ADC.
  • Các kết nối clock:
    • RTC (Real-Time Clock): Có thể nhận xung nhịp từ LSE hoặc LSI.
    • IWGDCLK: Xung nhịp độc lập cho Watchdog.
    • MCO (Main Clock Output): Cung cấp ngõ ra xung nhịp chính từ các nguồn như HSI, HSE, SYSCLK, PLL.

2. Hệ sinh thái STM32

Hệ sinh thái STM32 gồm các thành phần Ecosystem, Solutions, Learning/ Communities

STM32 Ecosystem

Môi trường STM32 bao gồm các thành phần chính sau:

  • STM32Cube: Công cụ hỗ trợ phát triển phần mềm và cấu hình vi điều khiển STM32.
  • Evaluation Tools: Các công cụ và bo mạch phát triển để đánh giá và thử nghiệm vi điều khiển.
  • Software Tools: Các công cụ phần mềm hỗ trợ lập trình và gỡ lỗi như STM32CubeIDE, STM32CubeProgrammer.
  • Embedded Software: Các phần mềm nhúng và thư viện như STM32Cube firmware, HAL, LL.
  • Hardware Tools: Các công cụ phần cứng hỗ trợ phát triển và kiểm tra mạch điện.
  • Security: Giải pháp bảo mật như STM32Trust để bảo vệ dữ liệu và ứng dụng.
  • MadeForSTM32: Chương trình chứng nhận và tối ưu hóa các sản phẩm và dịch vụ tương thích với STM32.
  • ST Partners: Chương trình đối tác của STMicroelectronics cung cấp các giải pháp và dịch vụ hỗ trợ.

STM32 Solutions

STM32 cung cấp các giải pháp đa dạng cho các ứng dụng khác nhau:

  • Artificial Neural Networks: Hỗ trợ phát triển mạng nơ-ron nhân tạo và các ứng dụng trí tuệ nhân tạo.
  • Connectivity: Các giải pháp kết nối như Bluetooth, Wi-Fi, và các giao thức truyền thông khác.
  • Graphical User Interface: Hỗ trợ phát triển giao diện người dùng đồ họa.
  • Motor Control: Các giải pháp điều khiển động cơ.
  • Safety: Các giải pháp đảm bảo an toàn và tuân thủ các tiêu chuẩn an toàn công nghiệp.

STM32 Learning / Communities

Hệ sinh thái STM32 còn cung cấp nhiều tài nguyên học tập và cộng đồng hỗ trợ:

  • STM32 Community: Cộng đồng người dùng STM32 chia sẻ kinh nghiệm, tài liệu và hỗ trợ nhau.
  • STM32 Education: Tài nguyên học tập, khóa học và tài liệu giáo dục về STM32.
  • STM32 MCU Wiki: Wiki chứa thông tin chi tiết, hướng dẫn và tài liệu liên quan đến STM32.
  • STM32 GitHub: Kho mã nguồn mở và các dự án mẫu trên GitHub hỗ trợ phát triển ứng dụng với STM32.
Hình 4. Hệ sinh thái STM32
Hình 5. Công cụ phần mềm phát triển và Gói phần mềm nhúng cho STM32

3. Công cụ phần mềm phát triển STM32

Hình 6. Các công cụ phần mềm phát triển STM32

STM32CubeMX: Đây là một công cụ đồ họa giúp cấu hình các thiết bị STM32. Giao diện người dùng dễ sử dụng này tạo mã khởi tạo C cho các lõi Cortex-M.

STM32CubeIDE: Đây là môi trường phát triển tích hợp (Integrated Development Environment – IDE) cho STM32. Dựa trên các giải pháp mã nguồn mở như Eclipse hoặc bộ công cụ GNU C/C++, IDE này bao gồm các tính năng báo cáo biên dịch và tính năng gỡ lỗi nâng cao. Nó cũng tích hợp các tính năng bổ sung từ các công cụ khác trong hệ sinh thái, chẳng hạn như khởi tạo phần cứng và phần mềm từ STM32CubeMX.

STM32CubeMonitor: Công cụ này giúp theo dõi và chẩn đoán ứng dụng STM32 trong thời gian chạy. Ngoài các phiên bản chuyên dụng, công cụ đa dạng này giúp hiển thị hành vi ứng dụng trên các thiết bị máy chủ như Máy tính, tablet, điện thoại qua việc thu thập dữ liệu từ xa.

STM32CubeProgrammer: Đây là môi trường dễ sử dụng và hiệu quả để đọc, viết và xác minh bộ nhớ của thiết bị thông qua giao diện gỡ lỗi (JTAG và SWD) và giao diện khởi động (UART và USB).

4. Gói phần mềm nhúng STM32

Hình 7. Các tầng trong gói phần mềm nhúng STM32

Gói MCU STM32Cube được tạo thành từ các API (Application programing interface) lớp trừu tượng phần cứng (Hardware abstraction layer – HAL) và lớp tầng thấp (Low-Layer – LL), cùng với một tập hợp nhất quán các thành phần middleware (RTOS, USB, hệ thống tệp FAT, Đồ họa và TCP/IP).

STM32Cube HAL là một lớp phần mềm nhúng STM32 đảm bảo khả năng linh hoạt tối đa trên STM32, trong khi các API LL tạo thành một lớp nhanh, nhẹ, dành cho dân chuyên, gần hơn với phần cứng so với HAL. HAL và LL API có thể được sử dụng đồng thời với một số hạn chế.

Trình điều khiển HAL (DRIVER) – OPTION

Các trình điều khiển HAL được thiết kế để cung cấp một bộ API phong phú và tương tác dễ dàng với các lớp ứng dụng trên cùng. Mỗi trình điều khiển bao gồm một tập hợp các chức năng cùng các tính năng ngoại vi phổ biến nhất. Việc phát triển mỗi trình điều khiển được điều khiển bởi một API chung, chuẩn hóa cấu trúc trình điều khiển, các chức năng và tên tham số.

Các trình điều khiển HAL bao gồm một tập hợp các mô-đun trình điều khiển, mỗi mô-đun dành riêng một ngoại vi độc lập. Tuy nhiên, trong một số trường hợp, mô-đun được liên kết với chế độ chức năng ngoại vi. Ví dụ, có nhiều môđun tồn tại cho ngoại vi USART: mô-đun trình điều khiển UART, mô-đun trình điều khiển USART, mô-đun trình điều khiển SMARTCARD và mô-đun trình điều khiển IRDA.

Các tính năng chính của HAL là:

  • Bộ API bao gồm các tính năng ngoại vi chung cũng như API mở rộng trong trường hợp các tính năng ngoại vi cụ thể.
  • Ba mô hình lập trình API: polling, interrupt và DMA.
  • Các API tuân thủ RTOS:
    • Các API hoàn toàn có thể tái nhập.
    • Sử dụng hệ thống thời gian chờ trong chế độ polling.
  • Hỗ trợ nhiều phiên bản ngoại vi cho phép các lời gọi API đồng thời cho nhiều phiên bản của một ngoại vi nhất định (USART1, USART2…).
  • Tất cả các API HAL thực hiện cơ chế hàm callback của người dùng:
    • Các API Khởi tạo/Hủy HAL có thể gọi các hàm callback của người dùng.
    • Các sự kiện ngắt ngoại vi.
    • Các sự kiện lỗi.
  • Cơ chế khóa đối tượng: truy cập phần cứng an toàn để ngăn chặn nhiều truy cập sai lệch đến các tài nguyên chia sẻ.
  • Thời gian chờ được sử dụng cho tất cả các quá trình chặn: thời gian chờ có thể là một bộ đếm đơn giản hoặc một cơ sở thời gian.

Trình điều khiển LOW – LAYER (DRIVER) – OPTION

Trình điều khiển tầng thấp (LOW-LAYER) được thiết kế để cung cấp một lớp nhẹ, nhanh và dành cho chuyên gia, gần với phần cứng hơn so với HAL. Ngược lại với HAL, các API LL không được cung cấp cho các ngoại vi mà truy cập được tối ưu hóa không phải là tính năng chính hoặc yêu cầu cấu hình phần mềm nặng và/hoặc ngăn xếp cấp cao phức tạp (chẳng hạn như USB). Trình điều khiển LL có các tính năng:

  • Một bộ các hàm để khởi tạo các tính năng chính của ngoại vi theo các tham số được chỉ định trong các cấu trúc dữ liệu
  • Một bộ các hàm được sử dụng để điền các giá trị mặc định của từng trường vào các cấu trúc dữ liệu khởi tạo
  • Các hàm để thực hiện việc hủy khởi tạo ngoại vi (các thanh ghi ngoại vi được khôi phục về giá trị mặc định)
  • Một bộ các hàm nội tuyến để truy cập trực tiếp và nguyên tử vào các thanh ghi
  • Hoàn toàn độc lập với HAL vì trình điều khiển LL có thể được sử dụng ở chế độ độc lập (không cần trình điều khiển HAL) hoặc ở chế độ hỗn hợp (với trình điều khiển HAL)
  • Bao gồm đầy đủ các tính năng ngoại vi được hỗ trợ

5. Giới thiệu về phần mềm STM32CubeMX và STM32CubeIDE

5.1. STM32CubeMX

STM32CubeMX là một công cụ hỗ trợ việc phát triển vi điều khiển STM32 với các tính năng chính như: Quản lý dự án, tạo dự án dễ dàng, cấu hình ghim linh hoạt, tạo dự án hoàn chỉnh, Tính toán mức tiêu thụ điện năng, cấu hình cây clock, cập nhật tự động STM32CubeMX và các gói MCU STM32Cube, tạo báo cáo, hỗ trợ các gói phần mềm nhúng, tạo software packs với STM32PackCreator, …

Giao diện MCU Selector

  • Chọn vi điều khiển (MCU), bo mạch hoặc dự án mẫu từ danh mục STM32 của STMicroelectronics.
  • Lọc và tìm kiếm MCU, bo mạch dễ dàng với các tùy chọn hỗ trợ.
  • So sánh các đặc điểm của vi điều khiển với các sản phẩm của đối thủ cạnh tranh để lựa chọn phù hợp.
Hình 8. Một số mục cần lưu ý trong giao điện MCU Selector

Giao diện Pinout & Configuration

Hình 9. Giao diện Pinout & Configuration

Giao diện Gán Chân và Cấu Hình (Pinout & Configuration) cung cấp các bảng điều khiển, chức năng và menu chính sau:

  • Danh sách thành phần (Component list):
    • Có thể xem theo thứ tự bảng chữ cái hoặc theo danh mục.
    • Mặc định, danh sách này bao gồm các ngoại vi và middleware được hỗ trợ bởi MCU đã chọn.
    • Chọn một thành phần từ danh sách này sẽ mở ra hai bảng điều khiển bổ sung (Chế độ – MODE và Cấu hình – CONFIGURATION) cho phép bạn đặt chế độ chức năng của nó và cấu hình các thông số khởi tạo sẽ được bao gồm trong mã được tạo.
    • Lưu ý: Khi dùng con trỏ chuột chỉ vào ngoại vi bất kì nhấn tổ hợp phím ctrl + D để có được một số thông tin cơ bản và tài liệu liên quan
Hình 10. Giao diện các thành phần trong Pinout & Configuration
Hình 11. Mẹo hiển thị thông tin cơ bản của ngoại vi
  • Giao diện gán chân (Pinout view):
    • Hiển thị sơ đồ biểu diễn trực quan về cách gán chân cho.
    • Mỗi chân được biểu thị bằng tên (ví dụ: PC4) và chức năng thay thế hiện tại được gán cho nó (nếu có).
Hình 12. Giao diện gán chân trong Pinout & Configuration
  • Cách gán chân thủ công
    • Bước 1: Nhấp vào chân trong chế độ Pinout View để hiển thị danh sách tất cả các chức năng thay thế khả dụng khác cùng với chức năng gán hiện tại được tô sáng màu xanh.
    • Bước 2: Nhấp để chọn chức năng mới để gán cho chân.
Hình 13. Cách gán chân thủ công
  • Giao diện hệ thống (System view)
    • Cung cấp tổng quan về tất cả các thành phần có thể cấu hình bằng phần mềm: GPIO, ngoại vi, middleware và các thành phần phần mềm bổ sung.
    • Các nút có thể nhấp cho phép mở các tùy chọn cấu hình cho thành phần được chọn (bảng điều khiển Chế độ và Cấu hình).
    • Màu sắc biểu tượng của nút phản ánh trạng thái cấu hình.
Hình 14. Giao diện hệ thống trong Pinout & Configuration
Hình 15. Các trạng thái của ngoại vi trong giao diện Hệ thống
  • Menu gói phần mềm (Software Packs)
    • Gồm hai menu phụ:
      • Chọn Thành phần (Select Components): Chọn các thành phần phần mềm không có sẵn theo mặc định cho dự án hiện tại. Việc lựa chọn này sẽ cập nhật giao diện Gán Chân và Cấu hình cho phù hợp.
      • Quản lý Gói Phần mềm (Manage Software Packs): Cài đặt/gỡ cài đặt các gói phần mềm.
    • Chức năng Phần mềm Bổ sung (Additional Software): Cho phép chọn các thành phần phần mềm không có sẵn theo mặc định cho dự án hiện tại. Việc lựa chọn một thành phần phần mềm bổ sung sẽ cập nhật giao diện Gán Chân và Cấu hình cho phù hợp.
Hình 16. Menu gói phần mềm
Hình 17. Giao diện Quản lý gói phần mềm

Giao diện Clock Configuration

Cửa sổ Cấu hình Clock của STM32CubeMX cung cấp tổng quan sơ đồ về các đường clock, nguồn clock, bộ chia và bộ nhân. Menu thả xuống và các nút bấm có thể được sử dụng để sửa đổi cấu hình cây clock thực tế, để đáp ứng các yêu cầu của ứng dụng.

Hình 18. Giao diện Cấu hình Clock Tree
Hình 19. Các thuật ngữ và từ viết tắt trên Clock tree
Hình 20. Các thuật ngữ và từ viết tắt trên Clock tree (tt)
Hình 21. Các trạng thái khung cấu hình Clock Tree

5.2. STM32CubeIDE

STM32CubeIDE là một nền tảng phát triển C/C++ tiên tiến với các tính năng cấu hình ngoại vi, tạo mã, biên dịch mã, liên kết và gỡ lỗi. Nó được xây dựng dựa trên nền tảng Eclipse®/CDT™ và chuỗi công cụ GCC để phát triển, và GDB để gỡ lỗi. Nó cho phép tích hợp hàng trăm plugin hiện có giúp hoàn thiện các tính năng của IDE Eclipse®.

  • STM32CubeIDE tích hợp ST MCUFinder và các chức năng STM32CubeMX để cung cấp trải nghiệm công cụ đa năng. Nó giúp bạn dễ dàng tạo các dự án vi điều khiển (MCU) hoặc bo mạch STM32 mới và xây dựng chúng bằng cách sử dụng chuỗi công cụ GCC đi kèm.
  • STM32CubeIDE bao gồm một phân tích xây dựng và một phân tích ngăn xếp tĩnh cung cấp cho người dùng thông tin hữu ích về trạng thái dự án và yêu cầu bộ nhớ.
  • STM32CubeIDE cũng bao gồm các tính năng gỡ lỗi tiêu chuẩn và nâng cao bao gồm chế độ xem các thanh ghi lõi CPU, bộ nhớ và thanh ghi ngoại vi, cũng như theo dõi biến trực tiếp và giao diện xem trình ghi nối tiếp. Một bộ phân tích lỗi sẽ hiển thị thông tin lỗi nếu lỗi được kích hoạt bởi bộ xử lý STM32 trong quá trình gỡ lỗi.
Hình 22. Các tính năng chính của phần mềm STM32CubeIDE

Information Center

Lần đầu tiên khởi động STM32CubeIDE và chọn không gian làm việc, Trung tâm thông tin sẽ được mở. Trung tâm thông tin cung cấp quyền truy cập nhanh để bắt đầu một dự án mới, xem video, đọc tài liệu STM32CubeIDE hoặc truy cập hỗ trợ và cộng đồng ST. Bạn có thể dễ dàng truy cập Trung tâm thông tin bất cứ lúc nào thông qua nút trên thanh công cụ Trung tâm thông tin hoặc từ menu Trợ giúp (Help).

Thông tin Trung tâm thông tin cung cấp quyền truy cập nhanh bao gồm: Bắt đầu một dự án mới, nhập vào một dự án có sẵn, đọc tài liệu tham khảo, truy cập hướng dẫn bắt đầu nhanh STM32CubeIDE, khám phá và tìm hiểu wiki về STM32 MPU và MCU, …

Hình 23. Các phần trong giao diện Information Center

Cửa sổ STM32CubeIDE

Hình 24. Giao diện cửa sổ chính STM32CubeIDE

Workspace

Khi khởi động STM32CubeIDE, bạn cần chọn một không gian làm việc. Không gian làm việc chứa môi trường phát triển được sử dụng.

Hình 25. Khung nhìn chứa các Dự án

Không gian làm việc (Workspace):

  • Chứa các dự án (projects). Về mặt kỹ thuật, workspace là một thư mục chứa các thư mục dự án hoặc tham chiếu đến chúng.
  • Có thể có nhiều workspace trên cùng một máy tính, nằm ở các vị trí khác nhau trong hệ thống file. Mỗi workspace có thể chứa nhiều dự án.
  • Người dùng có thể chuyển đổi giữa các workspace, nhưng chỉ có một workspace hoạt động tại một thời điểm.
  • Người dùng có thể truy cập bất kỳ dự án nào trong workspace đang hoạt động. Các dự án nằm trong workspace khác không thể truy cập được, trừ khi người dùng chuyển sang workspace đó.

Dự án (Project):

  • Chứa các tệp tin (files). Về mặt kỹ thuật, project là một thư mục chứa các tệp tin, có thể được tổ chức thành các thư mục con.
  • Các tệp tin trong một dự án không nhất thiết phải nằm vật lý trong một thư mục con của dự án đó. Chúng có thể nằm ở một vị trí khác và được liên kết vào dự án.

Khung nhìn (Views) và trình soạn thảo (Editors)

Một góc nhìn (Perspectives) thông thường hiển thị nhiều khung nhìn (Views). Mỗi khung nhìn được phát triển để hiển thị thông tin cụ thể, chẳng hạn như thông tin được thu thập từ dự án hoặc từ hệ thống nhúng được gỡ lỗi. Một góc nhìn có một vùng trình soạn thảo. Trình soạn thảo có thể được sử dụng để chỉnh sửa các tệp dự án. Nhiều tệp có thể được chỉnh sửa trong các tab khác nhau trong trình soạn thảo.

Hình 26. Một giao diện góc nhìn bao gồm nhiều khung nhìn

5.3. Cách tải phần mềm

  • Bước 1:  Để tải phần mềm STM32CubeIDE và STM32CubeMX, các bạn hãy truy cập vào trang web: https://www.st.com/en/development-tools/stm32cubeide.html và chọn ô Get Software; chọn hệ điều hành thích hợp -> Get latest -> Accept để chấp nhận các quyền
Hình 27. Giao diện thực hiện bước 1
  • Bước 2: Sau khi chọn phiên bản tải, trang web yêu cầu bạn tạo tài khoản MyST hoặc tải trực tiếp thông qua email. Các bạn nên tạo một tài khoản riêng để có thể trải nghiệm tốt nhất trên STM32CubeIDE vì khi các bạn cài đặt và tinh chỉnh phần mềm sẽ được yêu cầu các bạn phải có Tài khoản. Hãy thực hiện các bước đăng kí tài khoản theo hướng dẫn và sử dụng nó cho các phiên làm việc sau nhé.
  • Bước 3: Sau khi đăng kí thành công, tiến hành yêu cầu tải phần mềm, link tải phần mềm sẽ được gửi qua mail đăng kí. Sau khi nhận được e-mail download hãy chọn vào ô Download now để được dẫn tới trang chính chủ st.com và được tự động tải phần mềm
Hình 28. Link download phần mềm được gửi đến email
  • Bước 4: Giải nén file download, chạy file .exe của phần mềm. Chọn Next để tiếp tục, chọn I Agree đồng ý với License Agreement của công cụ -> Chọn đường dẫn cài đặt (khuyến khích nên để đường dẫn mặc định) -> Chọn các component cần tải
Hình 26. File .exe của phần mềm
Hình 29. Giao diện License Agreement
Hình 30. Chọn đường dẫn cài đặt
Hình 31. Chọn các components cài đặt
  • Bước 5: Thưởng thức tách trà và chờ được tải thành công
Hình 32. Hoàn thành quá trình cài đặt

6. Tạo project với STM32F103C8T6

Để tạo và cài đặt một project để lập trình ứng dụng, ta thực hiện các bước sau:

  • Bước 1: Chọn vào Biểu tượng STM32CubeIDE trên Desktop, điền đường dẫn folder thích hợp cho Workspace và chọn Launch
Hình 33. Giao diện thực hiện bước 1
  • Bước 2: Chọn ô Start new STM32 project để tao mới project
Hình 34. Giao diện thực hiện bước 2
  • Bước 3: Sau khi hiện lên STM32 Project, các bạn hãy điền và chọn đúng vi xử lý STM32F103C8T6, chọn Next
Hình 35. Giao diện thực hiện bước 3
  • Bước 4: Điền tên Project, tích vào các Option cần thiết và chọn Finish. Các bạn chờ để phần mềm tải Package cho STM32F1 nhé.
Hình 36. Giao diện thực hiện bước 4
Hình 37. Giao diện sau khi tạo project thành công

Lưu ý: Hãy nhớ đăng nhập tài khoản MyST để có được trải nghiệm tốt nhất nhé

7. Tài liệu tham khảo

Để tìm tài liệu về MCU các bạn hãy truy cập vào trang: https://www.st.com/content/st_com/en/stm32-mcu-developerzone/developer-resources.html

Hình 38. Tìm tài liệu kỹ thuật trong mục Developer resources
Hình 39. Cách truy cập vào Tài liệu kĩ thuật của STM32F103

Tại đây các bạn sẽ làm việc với một số loại tài liệu hữu ích và cần thiết để phục vụ đề tài của mình: https://www.st.com/en/microcontrollersmicroprocessors/stm32f103/documentation.html

Thực hiện bài viết: Nguyễn Hoàng Đăng Khoa, Nguyễn Hoàng Quốc Cường