STM32CubeMX – Công cụ hỗ trợ cấu hình MCU STM32

Khi bước đầu chuyển sang làm quen với dòng vi điều khiển ARM từ các dòng vi điều khiển truyền thống như AVR, PIC… chúng ta sẽ dễ cảm thấy bị choáng ngợp vì sự phức tạp và khổng lồ của nó. Nếu học ARM bằng tư duy của AVR hay PIC, nhớ từng register, từng công dụng của từng bit chắc chúng ta sẽ bỏ cuộc sớm. Thay vì phải nhớ từng bit buồn tẻ nhàm chán đó, các nhà sản xuất đã phát triển các thư viện/driver chuẩn cho các con chip của họ. Chúng ta sẽ không làm việc trực tiếp ở mức register nữa, mà làm quen với các hàm API đã được nhà sản xuất cung cấp sẵn, giúp cho việc viết chương trình trở nên dễ dàng hơn nhiều.

STM32

Hãng ST trước đây cũng cung cấp thư viện ngoại vi chuẩn (Standard Peripheral Libraries) để cho chúng ta sử dụng. Tuy nhiên sử dụng nó cũng còn quá nhiều điều phức tạp, và những ai mới bước vào thế giới ARM sẽ rất dễ nản lòng. Ví dụ đơn giản nhất là việc khởi tạo phần cứng ( Cài đặt RCC cho hệ thống, cài đặt ngoại vi…) cũng khá phức tạp.

Sau đó ST ra mắt công cụ STM32 MicroExplorer để giúp cấu hình ngoại vi, cũng như tạo project dựa trên các cấu hình đó, việc còn lại của chúng ta chỉ là viết code của mình. Trải qua nhiều version, STM32 MicroExplorer đã phát triển thành STM32CubeMX, một chương trình hoàn thiện hơn rất nhiều và giúp cho việc lập trình trên STM32 dễ dàng hơn bao giờ hết.

STM32CubeMX

 

Ưu điểm của STM32CubeMX

– Giúp cấu hình ngoại vi dễ dàng: Chọn các pin trên chip và chọn các tính năng mong muốn gắn với nó. Cấu hình Middlewares (FATS, FREERTOS), các ngoại vi như CRC, IWDG, TIMERS…, cấu hình Clock và tính toán mức độ tiêu hao năng lượng.

– STM32CubeMX tự động download các driver mới nhất của ST dành cho các dòng chip của mình. ST đã không còn phát triển Standard Peripheral Libraries nữa, thay vào đó họ phát triển cấu trúc firmware mới bao gồm lớp cách ly phần cứng (HAL) bao gồm các driver cho ngoại vi, lớp Middleware bao gồm hỗ trợ TCP/IP, USB, Graphics, FAT file system, Touch library, và hệ điều hành mã nguồn mở RTOS. Cấu trúc firmware mới này có mức độ trừu tượng cao hơn, tập trung vào các tính năng phần cứng chung thay vì tập trung thuần túy vào phần cứng. Mức độ trừu tượng cao hơn giúp phát triển các API thân thiện và có thể dễ dàng chuyển từ phần cứng này sang phần cứng khác. Lưu ý là Standard Peripheral Libraries không còn được khuyên dùng để phát triển các ứng dụng mới nữa.

STM32 Firmware Structure

– Tự động tạo project dựa trên cấu hình ở trên. STM32CubeMX đầu tiên sẽ download driver của dòng chip cần cấu hình, sau đó tạo code và copy các driver cần thiết vào projects, và tạo project trên các công cụ lập trình phổ biến như Keil hay IAR. Sau khi tạo xong, chúng ta có thể bắt tay ngay vào việc viết code.

 

Nói sơ qua về cấu trúc firmware STM32

STM32 Firmware Structure

– Level 0:

  • Board Support Package (BSP): cung cấp các API liên quan đến các thành phần phần cứng trên các board(ví dụ driver LCD, MicroSD). Khi sử dụng các board của ST ví dụ như STM32F3 Discovery, các API này giúp chúng ta nhanh chóng cấu hình/sử dụng các phần cứng có sẵn trên đó ví dụ LED, Buttons, Gyroscope…
  • Hardware Abstraction Layer (HAL): Cung cấp các driver ở mức thấp và các phương thức giao diện phần cứng để giao tiếp với các mức trên (application, libraries và stacks). HAL API chia làm 2 nhóm: nhóm thứ nhất cung cấp các API chung đối với tất cả các serie STM32, và nhóm API mở rộng riêng cho từng dòng chip.

– Level 1:

  • Các thành phần Middlewares: Bao gồm các thư viện USB Device, STMTouch, thư viện đồ họa STemWin, hệ điều hành FreeRTOS, FatFS.

– Level 2:

  • Dựa trên lớp dịch vụ Middleware, lớp trừ tượng mức độ thấp và sử dụng các ngoại vi.

STM32 Firmware Driver Folder

 

Có 2 cách đơn giản để tạo project nhanh sử dụng firmware, cách thứ nhất là sử dụng STM32CubeMX để cấu hình và tạo project, cách thứ 2 là sử dụng Template của firmware.

Ví dụ với board STM32F3 Discovery, template này nằm trong thư mục Projects/Templates. Trong đây sẽ có các project templates dành cho các IDE phổ biến như Keil, IAR…, chúng ta chỉ việc copy thư mục template thành thư mục projects mới của mình, có thể di chuyển đi nơi khác nhưng chú ý cập nhật lại đường dẫn firmware trong đó.

Hoặc có thể sử dụng lại các ví dụ trong thư mục Projects/<STM32xxx_yyy>/Examples…. Các template có sẵn này đã chứa các driver cơ bản cần thiết để project của chúng ta hoạt động. Trong đó đáng chú ý là hàm HAL_Init() khởi tạo hệ thống, hàm SystemClock_Config() để khởi tạo clock. Những công việc khá phức tạp này giờ chúng ta không phải bận tâm quá nhiều nữa.

 

Link công cụ:

Leave a Reply

2 Comments on "STM32CubeMX – Công cụ hỗ trợ cấu hình MCU STM32"

Notify of
avatar
Sort by:   newest | oldest | most voted
trackback

[…] bài trước đã giới thiệu, STM32CubeMX là công cụ giúp khởi tạo phần cứng, ngoại vi, xung nhịp… cho vi điều […]

trackback

[…] nguồn sử dụng tool STM32CubeMX v4.15.1 để gen code (Mới […]

wpDiscuz