Stm32f103c8t6 là gì

Nếu bạn là học viên mời bạn tham gia Nhóm hỗ trợ giải đáp của các khóa tại: //www.facebook.com/groups/altium.designer.vietnam

1. So về cấu hình thì STM32 là đối thủ không hề thua kém ai với cùng một mức giá

STM32 là chíp vi điều khiển 32 bit lõi Arm Cortex với cấu hình mạnh mẽ cho dù với phân khúc thấp nhất STM32F0x cũng có thể hoạt động lên tới 48Mhz, 64kB Flash, 16kB RAM, 8 bộ Timer 16 bit, 1 bộ Timer 32 bit, 10 bộ ADC 12 bit, 8 bộ USART, 2 bộ SPI, 2 bộ I2C. [Nguồn:
//www.st.com/en/microcontrollers-microprocessors/stm32f0x1.html#products ] Giá của dòng vi điều khiển này ở trên thị trường hiện nay rơi vào khoảng 30k đến 50k [STM32F030K6T6]. Chíp này hoạt động lên đến 48MHz, có 32kB Flash, 4kB RAM, 5 bộ Timer 16 bit, 10 bộ ADC 12 bit, 1 bộ USART, 1 bộ I2C, 1 bộ SPI. Đây là mức giá rẻ nhất so với các dòng vi điều khiển có cấu hình tương đương.

2. KIT học dễ mua dễ làm và giá khá bèo, không cần mạch nạp riêng nếu nạp qua Bootloader

Để tự học với STM32 bạn chỉ cần tiêu tốn tầm 50k cho KIT hoc [KIT phát triển STM32F0x] và 60k cho KIT nạp hoặc nếu bạn có sẵn module UART-USB thì dùng nạp luôn cũng được [nạp qua Bootloader]. Mức giá KIT này tương đương với giá của KIT Arduino nano nhưng Arduino nano dùng dòng chip 8bit trong khi KIT phát triển STM32F0x là 32bit lõi ARM khá mạnh.

3. Lập trình vi điều khiển 32bit lõi ARM dễ như lập trình trên Arduino IDE vậy tại sao bạn không thử?

Nếu bạn ngại lập trình bằng HAL API, STM32Cube vì những dòng code khá khó và khá lạ khác xa với những dòng chíp đơn giản mà các bạn đã lập trình trước đó. Thì nay với Mbed API các bạn có thể lập trình STM32 như lập trình với Arduino vậy.

Minh họa tính đơn giản với chương trình giao tiếp máy tính

4. Visual Studio Code, một công cụ soạn thảo biên dịch và nạp hoàn toàn miễn phí, đa nền tảng [Windows, Linux, MAC]

Đã qua rồi cái thời tìm CRACK, hãy thử với các công cụ OPEN SOURCE [mã nguồn mở] mạnh mẽ, dễ dùng, tương tác người dùng cao. Với sư hỗ trợ của PlatformIO bạn không những có thể lập trình STM32 mà còn Arduino, PIC, ESP32, ESP8266, 8051 v.v.. Đặc biệt là bạn có thể lập trình được trên các hệ điều hành hiện nay là Windows, Linux, MAC thật tuyệt phải không các bạn!

Giao diện Visual Studio Code trên Windows

5. Diễn đàn hỗ trợ về lập trình STM32 trên Mbed luôn có sẵn cho bạn cả trong lẫn ngoài nước

Trong nước các bạn có thể tìm đến diễn đàn của Elec2PCB, với sự hỗ trợ về lập trình STM32 trên Mbed framework tại link sau:
//www.facebook.com/groups/1952065898399986/

Ngoài nước các bạn có thể tìm đến:
//os.mbed.com/code/

6. Nếu tự học STM32 làm mất nhiều thời gian và công sức của bạn, bạn cũng có thể tìm đến với các khóa học online tại Elec2PCB.com

Tại Elec2PCB.com đang có các khóa học qua Skype [3 đến 5 học viên] giúp các bạn hệ thống lại các kiến thức lập trình STM32, chia sẽ các thiết kế dự án cơ bản với STM32. Trong thời gian 1 tháng bạn có thể làm chủ được STM32 và bắt tay được ngay vào những dự án đang ấp ủ của bạn. Bạn có thể tìm hiểu thêm về nội dung học và đăng ký học ở đây:
//elec2pcb.com/online-pcb-design-courses/stm32-microcontroller-training/

Hoặc nếu bạn vì bận rộn công việc, không thu xếp được thời gian cố định trong tuần để theo học lớp Skype ở trên, bạn cũng có thể chọn học qua video và tài liệu đọc bạn nhé! Chi phí học qua video và tài liệu đọc là 360k [sinh viên] và 450k [đi làm] KIT học bạn có thể tự mua hoặc đăng ký mua luôn tại Elec2PCB cũng được bạn nhé!

Online Lab nền tảng cho học online qua Skype tại Elec2PCB

Lập trình STM32 cần những kiến thức gì? Tại sao nên học Lập trình trên dòng chip STM32 nói riêng và các dòng chip lõi ARM nói riêng.

Học lập trình STM32 như thế nào là nhanh nhất.

Trong bài viết này, mình sẽ giới thiệu một cách khái quát đến cụ thể nhất, các bước bạn phải trải qua để có thể làm chủ dòng chip STM32.

Bắt đầu nhé

Tại sao nên chọn STM32

STM32 là dòng chip 32bit của hãng STMicrochip sử dụng công nghệ lõi ARM Cortex mạnh mẽ, hiệu năng tốt nhưng vẫn giữ được giá thành rẻ. Phù hợp với đa số các công ty hiện nay

Các lý do nên chọn STM32 đó là:

  • Tốc độ xử lý cao, ngoại vi hỗ trợ rất nhiều, dòng chip phân khúc thâp là STM32F0x cũng có thể hoạt động lên tới 48Mhz, 64kB Flash, 16kB RAM, 8 bộ Timer 16 bit, 1 bộ Timer 32 bit, 10 bộ ADC 12 bit, 8 bộ USART, 2 bộ SPI, 2 bộ I2C.
  • Giá thành rẻ nhưng hiệu quả đem lại lớn.
  • Học lập trình STM32 rất dễ dàng do cộng đồng hỗ trợ nhiều. 
  • Dễ xin việc do các công ty vừa và nhỏ sử dụng STM32 trong các ứng dụng rất nhiều
  • Công cụ lập trình đều Free và đầy đủ tài liệu hỗ trợ

Nếu đem STM32 ra so sánh với các dòng chip khác sẽ vẫn có nhiều khuyết điểm. Thế nhưng mặt bằng chung STM32 vẫn là lựa chọn tối ưu khi học lập trình.

Lập trình STM32 cần những kiến thức gì?

Kiến thức về ngôn ngữ lập trình

Lập trình STM32 nói riêng hay lập trình Vi Điều Khiển [MCU] đều sử dụng 2 ngôn ngữ chính đó là C và C++. Để học được lập trình vi điều khiển, bạn chắc chắn phải nắm rõ ngôn ngữ C. 

Đây chính là nền tảng, phần cốt yếu. Vì ngôn ngữ lập trình chính là phần biểu thị ngôn ngữ thông thường theo một quy chuẩn, để máy tính có thể hiểu và làm theo.

Lập trình chính là phiên dịch ngôn ngữ của con người sang ngôn ngữ của máy tính

Tiếp đến đó là các phương pháp lập trình với ngôn ngữ đó. Có 3 phương pháp lập trình chính đó là

  • Lập trình tuyến tính: Thường được sử dụng khi viết hàm, các chương trình cấu trúc đơn giản theo một chiều
  • Lập trình hướng cấu trúc [POP] hay còn gọi là lập trình hướng thủ tục: phương pháp này chia bài toán thành nhiều khối, sử dụng các câu lệnh điều kiện để điều hướng chương trình. Các khối lệnh lớn sẽ được chia thành các khối lệnh con, nhằm đơn giản hóa việc lập trình.
  • Lập trình hướng đối tượng [OOP]: là phương pháp sử dụng nhiều trên tầng ứng dụng, phương pháp này khiến code dễ bảo trì và nâng cấp.

Để hiểu rõ hơn về lập trình hướng đối tượng, bạn có thể đọc thêm: Sự khác nhau giữa lập trình hướng cấu trúc và hướng đối tượng

Kiến thức về kiến trúc vi điều khiển

Kiến trúc vi điều khiển về cơ bản là giống nhau với bất kì dòng vi điều khiển nào bạn sử dụng. Bạn phải hiểu vi điều khiển là gì, nó hoạt động như thế nào thì việc học lập trình trên vi điều khiển sẽ dễ dàng hơn.

Có một khó khăn rất lớn khi bạn học xong ngôn ngữ lập trình C sau đó sử dụng nó để lập trình vi điều khiển đó là: Khi học ngôn ngữ C trên turbo C hoặc Dev C, chúng ta học nặng về giải thuật và ngữ pháp. Thế nhưng khi học và vi điều khiển chúng ta sẽ phải tìm hiểu tới bộ nhớ, kiểu dự liệu và cấu trúc dữ liệu.

Một chương trình viết trên Dev C có thể biên tập và chạy được ngay, thế nhưng một chương trình muốn chạy trên 1 vi điều khiển cần nhiều hơn thế. Thế nên đây cũng là lý do nhiều bạn không thể theo được lập trình vi điều khiển

Học lập trình STM32 chúng ta phải hiểu về kiến trúc của STM32, cấu trúc bộ nhớ, ngoại vi của vi điều khiển đó.

Cách sử dụng các ngoại vi, chuẩn giao tiếp

Nếu coi Vi điều khiển [MCU] là một con người đầy đủ ngũ quan, thì Vi xử lý [MPU] chính là bộ não. Còn mắt, mũi, mồm, tai, tay chân chính là ngoại vi [Peripheral]. Các ngoại vi này có chức năng tương hỗ với MPU để giao tiếp với môi trường.

Để làm chủ được Vi điều khiển chúng ta cần học cách sử dụng các ngoại vi đó. Mỗi vi điều khiển đều có một danh sách ngoại vi khác nhau tùy thuộc vào nhà sản xuất. Chúng ta có thể đọc trong Datasheet của linh kiện đó.

Để biết cách đọc datasheet các bạn đọc bài viết: Hướng dẫn đọc Datasheet cho sinh viên điện tử và lập trình

Lập trình STM32 chính là học cách sử dụng các ngoại vi của chip STM32 để tương tác với người lập trình hoặc với môi trường.

Phân tích bài toán ứng dụng thành các bài toán lập trình

Để hoàn toàn có thể làm chủ được một vi điều khiển, chúng ta phải biết cách phân tích bài toán thực tế thành các bài toán lập trình. Sau đó phân chia bài toán để cùng nhau hoàn thiện sản phẩm.

Những người có thể phân tích được vấn đề đều phải hiểu rõ cả phần cứng và phần mềm. Một chuyên gia như vậy sẽ có chức vụ Architet Software, và nhận một mức lương khá cao.

Khi học lập trình STM32 chúng ta cần sử dụng những kiến thức đó để tạo ra các sản phẩm thực tế, như vậy sẽ nâng cao khả năng phân tích, giải quyết vấn đề. Và quan trọng nữa là, khi bạn có thành quả thì việc học sẽ trở nên dễ dàng hơn.

Các công cụ cần thiết để học lập trình STM32

Bài 1: Cài đặt STM32 CubeMx và Keil C

Hướng dẫn cài đặt package cho STM32 CubeMx và Keil C

Hướng dẫn cài đặt và sử dụng ST Link Utility cài driver mạch nạp

Hướng dẫn Download và sử dụng Hercules Terminal công cụ cổng COM ảo

Kiến trúc bộ nhớ STM32 và phần lõi ARM

Những kiến thức về kiến trúc, cấu trúc bộ nhớ STM32 là phần rất quan trọng nếu chúng ta muốn học thật sâu về nó. Giúp chúng ta hiểu hơn về vi điều khiển nói chung và dòng chip STM32 nói riêng

Tổng quan về vi xử lý lõi ARM Cortex M3, M4, M7, M9 

Tổng quan về hệ sinh thái STM32 Cube

Cấu trúc và bản đồ bộ nhớ STM32f103

Các bài hướng dẫn lập trình STM32 điều khiển các ngoại vi sử dụng HAL

Điều khiển các ngoại vi [peripheral] là những bài học bắt buộc để có thể làm chủ một loại vi điều khiển nào đó. Về cơ bản, các ngoại vi đều có cách hoạt động giống nhau. Khi đã thành thạo sử dụng, chúng ta có thể thay đổi dòng chip điều khiển dễ dàng. 

Bài 2: Tổng quan về KIT STM32F103C8T6 Blue Pill

Bài 3: Lập trình STM32 GPIO, điều khiển Led bằng nút nhấn

Bài 4: Lập trình ngắt ngoài STM32 EXTI

Bài 5: Lập trình Timer STM32 chớp tắt led dùng ngắt

Bài 6: STM32 Timer chế độ inputcapture và output compare

Bài 7: STM32 Timer chế độ PWM nhiều  kênh

Bài 8: Lập trình STM32 đọc ADC một kênh

Bài 9: Lập trình STM32 ADC nhiều kênh dùng DMA

Bài 10: Giao thức I2C, lập trình STM32 với Module RTC DS3231

Bài 11: Lập trình STM32 với giao thức UART

Bài 12: Lập trình STM32 với giao thức SPI

Bài 13: Lập trình STM32 RTC, hẹn giờ thời gian thực

Bài 14: Sử dụng STM32 Independent Watchdog

Bài 15: Sử dụng STM32 Window Watchdog

Bài 16: Lập trình STM32 USB CDC truyền dữ liệu qua cổng COM

Bài 17: Lập trình STM32 USB HID chuột máy tính

Bài 18: Lập trình STM32 USB HID Bàn phím máy tính

Bài 19: Lập trình STM32 USB HID Custom

Bài 20: Lập trình STM32 flash đọc, ghi, xóa dữ liệu

Bài 21: Lập trình STM32 Bit Banding điều khiển GPIO

Lập trình STM32 giao tiếp với cảm biến và thiết bị

Bài 1: Tạo Delay Us với Timer và cách hoạt động của Systick 

Bài 2: STM32 với nút nhấn 3 chế độ click, double click và long click.

Bài 3: STM32 với LED 7 đoạn

Bài 4: STM32 với LCD1602 chế độ 8 Bit và 4 Bit

Bài 5: STM32 với LCD I2C sử dụng module PCF8574

Bài 6: STM32 với DHT11 theo chuẩn giao tiếp 1 Wire

Bài 7: STM32 với DS18B20 đọc nhiệt độ chuẩn 1 wire

Bài 8: STM32 với TFT LCD ST7735 giao thức SPI

Bài 9: STM32 với Keypad

Bài 10: STM32 với Oled LCD SSD1306

Bài 11: STM32 với DFplayer

Bài 12: STM32 với RFID RC522

Bài 13: STM32 với SRF05

Bài 14: STM32 với TFT LCD ILI9341

Bài 15: STM32 với Servo

Lập trình STM32 với các ngoại vi cấp cao trên STM32F407

Bài 1: Lập trình STM32 DAC tạo sóng hình sin

Bài 2: Lập trình STM32 I2S phát âm thanh

Bài 3: Lập trình STM32 SDIO giao tiếp với thẻ nhớ

Bài 4: Biến STM32 thành USB với STM32 USB device MSC

Bài 5: Đọc dữ liệu từ USB với STM32 USB Host MSC

Bài 6: Đọc dữ liệu từ bàn phím với STM32 USB Host HID

Bài 7: Lập trình STM32 FSMC giao tiếp với LCD 16bit

Lập trình hệ điều hành với STM32 Freertos

Bài 1: Tổng quan về hệ điều hành thời gian thực RTOS

Bài 2: Cách sử dụng Task trong lập trình STM32 Freertos 

Bài 3: Cách sử dụng Binary Semaphore trong lập trình STM32 Freertos 

Bài 4: Cách sử dụng Counting Semaphore trong lập trình STM32 Freertos 

Bài 5: Cách sử dụng Queue trong lập trình STM32 Freertos 

Kiến thức nâng cao

Hướng dẫn Debug trên Keil C

Hướng dẫn retarget printf với STM32 Uart để in log trên Keil C 

Khóa code với Option Bytes

Lập trình STM32 Bootloader

Cập nhật Firmware từ xa với FOTA

Ring Buffer là gì, nhận dữ liệu UART sử dụng Ring Buffer

STM32 Lowpower Mode

Hướng dẫn phân tích bài toán lập trình

Thiết kế phần cứng, thiết kế mạch in STM32

Download tài liệu lập trình STM32 

Hướng dẫn download tài liệu lập trình STM32 trên github khuenguyencreator

Kết

Việc lập trình STM32 hay một dòng vi điều khiển nào khác đều cần thời gian để kiến thức ngấm vào từ từ. Dù bạn có sử dụng phương pháp học nào thì cũng cần thời gian để tiêu hóa lượng kiến thức đó.

Đôi khi học lập trình Vi điều khiển không đạt được kết quả luôn như việc học lập trình các ngôn ngữ khác. Thế nhưng khi bạn đã chín muồi, bạn có thể làm được những điều hơn thế rất nhiều. Cơ hội trao cho bạn cũng sẽ rộng mở hơn rất nhiều

Nếu thấy bài viết này hay, hãy chia sẻ tới những người bạn học hay đồng nghiệp của mình. Và nếu thắc mắc điều gì, hãy để lại bình luận nhé

Và cùng gia nhập những người nghiện lập trình tại đây nhé: Hội anh em nghiện lập trình

Video liên quan

Chủ Đề