Nạp chương trình đầu tiên cho STM8S103F3P6 với Arduino IDE và IAR

Như các bạn đã biết mạch STM8S103F3P6 sử dụng chip STM8S103F3P6 của hãng STMicroelectronics. STM8S103 là dòng vi điều khiển 8-bit hỗ trợ bộ nhớ Flash 8 Kbytes cộng với bộ nhớ EEPROM tích hợp. Chúng cung cấp các lợi ích như: hiệu suất cao, tốc độ ổn định, độ bền cao, giảm giá thành hệ thống. Có thể ghi xóa chương trình lên đến 100.000 lần nhờ tích hợp thêm bộ nhớ EEPROM bên trong. Tần số hoạt động 16MHz, watchdog độc lập với nguồn xung clock riêng biệt. Để hiểu rõ hơn về dòng STM8S các bạn xem datasheet tại: https://www.st.com/resource/en/datasheet/stm8s103f3.pdf

Hôm nay, mình sẽ hướng dẫn các bạn nạp chương trình cho STM8S103F3P6 bằng hai trình biên dịch thông dụng là Arduino IDE và phần mềm IAR chuyên dụng cho STM8.

Để làm theo hướng dẫn này bạn phải chuẩn bị một mạch nạp ST-LINK có chuẩn giao tiếp SWIM (single wire interface module) và một mạch STM8S103F3P6. Các bạn có thể mua tại link sau:

Kết nối theo sơ đồ sau:

  • 3.3V <===> 3V3
  • SWIM <===> SWIM
  • GND <===> GND
  • RST <===> NRST

Lập trình bằng Arduino IDE:

Đầu tiên để lập trình với arduino bạn cần phải tải và cài đặt phần mềm tại: https://www.arduino.cc/en/software. Nếu ai chưa biết cài đặt có thể lên google tìm hướng dẫn tải và cài đặt Arduino.

Để lập trình trên Arduino chúng ta cần phải thêm board STM8S103F3 vào phần mềm, mặc định của Arduino sẽ chưa bao gồm board này.

Bước 1:

Mở Arduino IDE, vào File -> Preferences. Ở chỗ Additional Boards Manager URLs thêm vào dòng này: https://github.com/tenbaht/sduino/raw/master/package_sduino_stm8_index.json sau đó nhấn OK.

Bước 2:

Vào Tools -> Board -> Boards manager…

Trong cửa sổ Boards Manager tìm kiếm “stm8” và ấn Install để cài đặt “Sduino STM8 plain C core (non-C++).

Sau khi cài đặt xong vào menu Tools -> Board -> STM8S Boards chọn STM8S103F3 Breakout Board như hình dưới:

Vào Tools > Programmer chọn ST-Link/V2 hoặc ST-Link/V2:

Cuối cùng bạn vào File -> Examples -> Basic -> Blink để mở chương trình nhấp nháy LED và nhấn vào nút Upload trên thanh toolbar để nạp chương trình và xem kết quả:

Vậy là chúng ta đã có thể nạp chương trình nhấp nháy led đầu tiên cho STM8SF103P6 bằng trình biên dịch Arduino IDE rất đơn giản và tiện lợi.

Lập trình bằng phần mềm IAR:

Trình biên dịch IAR là phần mềm khá phổ biến và thông dụng để lập trình cho các dòng STM8S, các bạn có thể tải phần mềm tại link sau:  https://www.iar.com/iar-embedded-workbench/ . Chúng ta cùng tiến hành tạo project và nạp chương trình đầu tiên cho STM8S bằng trình biên dịch IAR.

Bước 1: Tạo và lưu project

Đầu tiên mở phần mềm IAR lên, vào mục Project -> Create New Project:

Sau khi click vào Create New Project.., một cửa sổ sẽ hiện lên và chúng ta sẽ chọn ngôn ngữ C để lập trình và bấm OK để qua bước tiếp theo:

Tiếp theo, phần mềm sẽ yêu cầu chúng ta đặt tên và chọn nơi lưu cho cái Project mới này (chúng ta sẽ lưu vào một thư mục mà các bạn đã tạo sẵn). Trong ví dụ này, mình sẽ đặt tên là Blink_LED và lưu ở thư mục STM8S -> Blink_LED vừa tạo ở Desktop, sau đó nhấn Save.

Bước 2: Cấu hình cho phần mềm:

Ở bước này, chúng ta sẽ cấu hình những thông tin cần thiết để việc lập trình không xảy ra lỗi và sau khi lập trình chúng ta có thể nạp code cho Vi điều khiển STM8S. Để cấu hình, chúng ta click chuột phải vào tên project (Blink_LED) và chọn Options:

Tại cửa sổ General Options, chúng ta sẽ chọn loại chip mà chúng ta lập trình. Trong bài viết này, mình sử dụng chip STM8S103F3P6 nên mình sẽ chọn mục STM8S103F3P.

Tiếp theo, tại mục Output Converter, chúng ta sẽ chọn định dạng file xuất ra khi biên dịch project.

Tại mục Debugger chọn DriverST-LINK, sau đó chọn OK để lưu cấu hình.

Bước 3: Viết chương trình:

Chúng ta sẽ viết một chương trình nhấp nháy led ở thư mục main.c:

Code nhấp nháy Led ở chân PB5 của STM8S103F3P6:

#include <iostm8s103f3.h>
#include <intrinsics.h>
int main( void )
{
  // Configure PB5
  PB_DDR_DDR5 = 1; // Led off
  PB_CR1_C10 = 1; // Output
  PB_CR2_C20 = 1; // Push-pull
  PB_ODR_ODR5 = 1; // High speed
  TIM4_PSCR = 0x03; // Prescaler = 8
  TIM4_EGR_UG = 1; // Generate an update event so prescaler value will be taken into account
  TIM4_CR1_CEN = 1; // Enable TIM4
  while(1)
  {
    for (unsigned int i = 0; i<1000; i++)
    {
      TIM4_CNTR = 0;
      while (TIM4_CNTR < 250);
    }
    PB_ODR_ODR5 = !PB_ODR_ODR5;
  }
}

Sau khi viết chương trình xong, nhấn nút Complite (Ctrl + F7) để biên dịch chương trình:

Tiếp theo, nhấn nút Download and Debug (Ctrl + D) để nạp chương trình:

Sau khi nạp chương trình, để thấy Led nhấp nháy chúng ta nhấn nút Go (F5) để chạy chương trình và xem kết quả thực tế.

Qua bài hướng dẫn này chúng ta đã có thể nạp chương trình cho STM8S103F3P6 bằng hai trình biên dịch thông dụng Arduino và IAR. Các bạn có thể chọn một trong hai phần mềm để bắt đầu tìm hiểu về dòng vi điều khiển này. Chúc các bạn thành công!!!