HƯỚNG DẪN STM CƠ BẢN - B1

GIỚI THIỆU BOARD STM32F103C8T6 VÀ STM32CUBE IDE

Author: Cong Huy

GIỚI THIỆU BOARD STM32F103C8T6

GIỚI THIỆU CHIP

STM32F103C8T6 thuộc dòng chip STM32F1 32bit, được trang bị lõi ARM Cortex-M3, được công ty STmicroelectronics công bố vào tháng 6/2007, ngay sau khoảng một năm được cấp phép sử dụng lõi ARM. Chip thuộc nhóm mainstream là nhóm các chip tầm trung, tuy nhiên hiệu năng vẫn là rất cao cùng với giá thành lại tương đối rẻ so với các chip khác trên thị trường nên rất được giới lập trình vi điều khiển tin dùng.

STM32F103C8T6 được trang bị lõi ARM Cortex-M3 với tần số hoạt động cao 72Mhz. Cùng với đó là các thông số rất ấn tượng:

  • Bộ nhớ: 64 Kbytes cho bộ nhớ Flash, 20Kbytes SRAM.
  • Điện áp hoạt động thấp: 2V đến 3.6V.
  • Thạch anh: thạch anh nội dùng dao động RC 8Mhz hoặc 40Mhz, thạch anh ngoại có thể sử dụng từ 4 Mhz đến 20 Mhz.
  • DMA (Direct Memory Access) cho phép truyền thông một cách nhanh chóng mà không cần CPU hỗ trợ. Có 7 kênh hỗ trợ cho các giao tiếp ADC, I2C, SPI, UART.

TỔNG QUAN BOARD

Picture1

Các thiết bị trên board:

  • 1 cồng MiniUSB có nhiệm vụ cấp nguồn, nạp code cho chip.
  • Một IC ổn áp nhằm cấp điện áp 3.3V cho chip hoạt động.
  • Thạch anh 8Mhz.
  • Thạch anh 32Khz cho các ứng dụng thời gian thực (RTC).
  • Led nguồn, Led PC13, nút Reset.
  • 4 chân nạp SWD cho các loại mạch nạp khác.
  • 40 chân trong đó 14 chân portA, 15 chân PortB, 3 chân PortC, 3 GND, 2 chân VCC 3.3V, 1 chân VCC 5V, 1 chân Vbat và 1 chân Reset.
  • Các chân chọn chế độ boot. Bằng việc cắm các jump ta có thể chọn các chế độ thực thi chương trình do người dùng nạp vào, chạy chương trình bootloader của nhà sản xuất hoặc chạy chương trình có trong RAM.

Board có thể tương thích với các loại mạch nạp như ST-link, J-link, USB to COM và để sử dụng cần cài các driver tương ứng.

PHÁT TRIỂN

Hiện tại có rất nhiều phần mềm hỗ trợ cho việc lập trình trên STM32. Phần mềm dùng để configure là STM32Cube MX cùng với đó là các trình biên dịch để lập trình như KeilC, IAR, Eclipse, Workbench. Tuy nhiên để thuận tiện chúng ta có thể sử dụng phần mềm STM32Cube IDE đầy là một môi trường phát triển tích hợp bao gồm các tính năng báo cáo biên dịch chương trình và các tính năng gỡ lỗi nâng cao, nó cũng được tích hợp thêm công cụ STM32CubeMX bên trong để tiện cho việc cấu hình và sinh code.

Thư viện lập trình: có nhiều loại thư viện lập trình cho STM32 như: STM32snippets, STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries, Mbed core. Trong đó HAL được nhiều lập trình viên sử dụng.

Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…

TÀI LIỆU NGHIÊN CỨU

Datasheet: https://www.st.com/resource/en/datasheet/stm32f103c8.pdf

Description of STM32F1 HAL & LL driver:

https://www.st.com/resource/en/user_manual/dm00154093-description-of-stm32f1-hal-and-lowlayer-drivers-stmicroelectronics.pdf

SỬ DỤNG STM32CUBE IDE

Như đã nói ở phần trên STM32Cube IDE có đầy đủ các tính năng để chúng ta hoàn thành một dự án với các dòng chip STM32.

Cách cài đặt cũng hoàn toàn đơn giản, chỉ cần tìm kiếm phần mềm này tại trang chủ ST (https://www.st.com/en/development-tools/stm32cubeide.html). Tải về và giải nén là bạn có thể sử dụng được rồi.

TẠO PROJECT

Mở STM32Cube IDE lên và việc đầu tiên phần mềm này yêu cầu là chọn đường dẫn workspace, đây sẽ là nơi lưu trữ các project bạn sẽ tạo:

Picture2

Chọn xong và nhấn vào Launch nhé.

Sau khi cửa sổ của IDE đã hiện lên, ta chọn File > New > STM32 Project. Cửa sổ STM32 Project xuất hiện, tại phần Part Number ta nhập tên chip sau đó chọn chip bên danh sách và nháy Next.

 Picture3

Tiếp theo ta nhập Project Name, hãy cứ để chọn Use default location để project được tự động lưu vào workspace mà ta đã tạo trước đó. Ta có thể chọn Targeted language mong muốn và nháy Finish.

Picture5

CẤU HÌNH

Phần mềm sẽ được đưa đến giao diện cấu hình cho chip.

Tại tab Pinout & Configuration ta có thể cấu hình trực tiếp cho các chân pin, hầu hết các chân pin sẽ có các chức năng I-O, timer, ngắt ngoài… Và một số chân cũng có những chức năng riêng. Ví dụ như ở hình dưới hai chân PA13 và PA14 được cấu hình thành các chân nạp SWD. Bên phần Categories là các phần cấu hình cho các giao tiếp và chức năng mà ta đã thiết lập cho các chân pin.

Picture6

Tab Clock Configuration là nơi giúp ta cấu hình nguồn tạo dao động từ thạch anh nội tạo dao động RC (HSI) hoặc thạch anh ngoại (HSE). Cùng với đó là cấu hình các bộ chia tần số để tạo ra tần số hoạt động cho vi điều khiển.

Picture7

Tại tab Project Manager ở các mục ProjectCode Generator chúng ta có thể để mặc định như vậy. Với phần Advanced Settings chúng ta có thể chọn loại thư viện giữ HAL và LL.

Picture8

Sau khi cấu hình xong ta lưu lại: File / Save hoặc Ctrl + S. Phần mềm sẽ hiện thông báo cho việc lựa chọn có generate code.

Picture9

GIAO DIỆN DEVELOP

Tiếp theo cửa sổ để ta lập trình sẽ xuất hiện với hai tab ProjectName.ioc và main.c nên chúng ta có thể vừa code vừa có thể cấu hình lại chip. Lưu ý là chúng ta sẽ code ở giữa các dòng USER CODE BEGIN và USER CODE END để khi ta cấu hình lại chip và compile thì các code đã viết sẽ không mất đi.

Picture10

Trên thanh công cụ chúng ta chú ý một số chức năng như:

  • Build chương trình Picture11
  • Nạp chương trình Picture12
  • Debug Picture13
  • Genarate Code Picture14

KẾT LUẬN

STM32 là dòng vi điều khiển mạnh, đa năng lại đang phổ biến và được ưu dùng, chính vì vậy mà các bạn sinh viên nên học tập và nghiên cứu để có kiến thức ứng dụng cho các công việc sau này. Với STM32Cube IDE, đây là một phần mềm hỗ trợ đầy đủ cho việc lập trình trên các dòng chip STM32, miễn phí, dễ cài đặt cũng như sử dụng.