STM32F103C8T6 คณะกรรมการพัฒนาระบบขั้นต่ำ
ข้อมูลสินค้า
โมดูลบอร์ดพัฒนาระบบขั้นต่ำ STM32F103C8T6 ARM STM32 เป็นบอร์ดพัฒนาที่ใช้ไมโครคอนโทรลเลอร์ STM32F103C8T6 บอร์ดนี้ได้รับการออกแบบมาให้เขียนโปรแกรมโดยใช้ Arduino IDE และเข้ากันได้กับ Arduino clone, variants และบอร์ดของบริษัทอื่น เช่น ESP32 และ ESP8266
บอร์ดนี้ซึ่งเรียกอีกอย่างว่า Blue Pill Board ทำงานที่ความถี่สูงกว่า Arduino UNO ประมาณ 4.5 เท่า สามารถใช้กับโปรเจ็กต์ต่างๆ และสามารถเชื่อมต่อกับอุปกรณ์ต่อพ่วง เช่น จอแสดงผล TFT ได้
ส่วนประกอบที่จำเป็นในการสร้างโปรเจ็กต์ด้วยบอร์ดนี้ ได้แก่ บอร์ด STM32, โปรแกรมเมอร์ FTDI, จอแสดงผล TFT สี, ปุ่มกด, เบรดบอร์ดขนาดเล็ก, สายไฟ, พาวเวอร์แบงค์ (ตัวเลือกสำหรับโหมดสแตนด์อโลน) และตัวแปลง USB เป็นซีเรียล
แผนผัง
หากต้องการเชื่อมต่อบอร์ด STM32F1 เข้ากับจอแสดงผล TFT สีขนาด 1.8 นิ้วที่ใช้ ST7735 และปุ่มกด ให้ทำตามการเชื่อมต่อแบบพินต่อพินที่อธิบายไว้ในแผนผังที่ให้มา
การตั้งค่า Arduino IDE สำหรับ STM32
- เปิด Arduino IDE
- ไปที่เครื่องมือ -> บอร์ด -> ตัวจัดการบอร์ด
- ในกล่องโต้ตอบที่มีแถบค้นหา ให้ค้นหา “STM32F1” และติดตั้งแพ็กเกจที่สอดคล้องกัน
- รอให้ขั้นตอนการติดตั้งเสร็จสิ้น
- หลังจากติดตั้งแล้ว บอร์ด STM32 จะพร้อมให้เลือกใช้ได้ภายใต้รายการบอร์ด Arduino IDE แล้ว
การเขียนโปรแกรมบอร์ด STM32 ด้วย Arduino IDE
ตั้งแต่เริ่มก่อตั้ง Arduino IDE ได้แสดงให้เห็นถึงความปรารถนาที่จะรองรับแพลตฟอร์มทุกประเภท ตั้งแต่ Arduino โคลนและรุ่นต่างๆ ของผู้ผลิตต่างๆ ไปจนถึงบอร์ดของบริษัทอื่นๆ เช่น ESP32 และ ESp8266 เมื่อผู้คนคุ้นเคยกับ IDE มากขึ้น ก็เริ่มมีการรองรับบอร์ดที่ไม่ได้ใช้ชิป ATMEL มากขึ้น สำหรับบทช่วยสอนในวันนี้ เราจะมาดูบอร์ดดังกล่าวตัวหนึ่ง เราจะตรวจสอบวิธีการเขียนโปรแกรมบอร์ดพัฒนา STM32F32C103T8 ที่ใช้ STM6 ด้วย Arduino IDE

บอร์ด STM32 ที่จะใช้สำหรับบทช่วยสอนนี้ไม่ใช่ใครอื่นนอกจากบอร์ดพัฒนา STM32F103 ที่ใช้ชิป STM8F6C32T1 ซึ่งมักเรียกกันว่า "Blue Pill" ซึ่งสอดคล้องกับสีน้ำเงินของ PCB Blue Pill ขับเคลื่อนด้วยโปรเซสเซอร์ ARM STM32F32C103T8 6 บิตอันทรงพลังซึ่งมีความเร็วสัญญาณนาฬิกาที่ 72MHz บอร์ดนี้ทำงานที่ระดับลอจิก 3.3v แต่พิน GPIO ได้รับการทดสอบแล้วว่าทนแรงดัน 5v ได้ แม้ว่าจะไม่มี WiFi หรือ Bluetooth เช่นเดียวกับรุ่น ESP32 และ Arduino แต่ก็มี RAM 20KB และหน่วยความจำแฟลช 64KB ซึ่งเพียงพอสำหรับโปรเจ็กต์ขนาดใหญ่ นอกจากนี้ยังมีพิน GPIO 37 พิน ซึ่ง 10 พินสามารถใช้สำหรับเซ็นเซอร์อนาล็อกได้เนื่องจากมีการเปิดใช้งาน ADC รวมถึงพินอื่นๆ ที่เปิดใช้งานสำหรับ SPI, I2C, CAN, UART และ DMA สำหรับบอร์ดที่มีราคาประมาณ 3 เหรียญ คุณคงจะเห็นด้วยกับฉันว่านี่เป็นข้อมูลจำเพาะที่น่าประทับใจมาก ภาพด้านล่างแสดงข้อมูลจำเพาะโดยย่อที่เปรียบเทียบกับ Arduino Uno

จากข้อมูลจำเพาะข้างต้น ความถี่ที่ Blue Pill ทำงานนั้นสูงกว่า Arduino UNO ประมาณ 4.5 เท่า สำหรับบทช่วยสอนของวันนี้ เป็นตัวอย่างampในการใช้บอร์ด STM32F1 เราจะเชื่อมต่อบอร์ดเข้ากับจอแสดงผล TFT ขนาด 1.44 นิ้ว และตั้งโปรแกรมเพื่อคำนวณค่าคงที่ “Pi” เราจะสังเกตว่าบอร์ดใช้เวลานานเท่าใดในการรับค่าดังกล่าว และเปรียบเทียบกับเวลาที่ Arduino Uno ใช้ในการทำงานเดียวกัน
ส่วนประกอบที่จำเป็น
จำเป็นต้องมีส่วนประกอบต่อไปนี้เพื่อสร้างโครงการนี้:
- บอร์ด STM32
- โปรแกรมเมอร์ FTDI
- ทีเอฟทีสี
- ปุ่มกด
- เบรดบอร์ดขนาดเล็ก
- สายไฟ
- พาวเวอร์แบงค์
- เครื่องแปลง USB เป็นซีเรียล
ตามปกติแล้ว คุณสามารถซื้อส่วนประกอบทั้งหมดที่ใช้ในบทช่วยสอนนี้ได้จากลิงก์ที่แนบมา อย่างไรก็ตาม จำเป็นต้องใช้พาวเวอร์แบงค์เฉพาะในกรณีที่คุณต้องการใช้งานโปรเจ็กต์ในโหมดสแตนด์อโลนเท่านั้น
แผนผัง
- ดังที่ได้กล่าวไว้ก่อนหน้านี้ เราจะเชื่อมต่อบอร์ด STM32F1 เข้ากับจอแสดงผล TFT สีขนาด 1.8 นิ้วที่ใช้ ST7735 ด้วยปุ่มกด
- ปุ่มกดจะใช้เพื่อสั่งให้บอร์ดเริ่มการคำนวณ
- เชื่อมต่อส่วนประกอบตามที่แสดงในแผนผังด้านล่าง

เพื่อให้การเชื่อมต่อทำซ้ำได้ง่ายขึ้น การเชื่อมต่อแบบพินต่อพินระหว่าง STM32 และจอแสดงผลมีรายละเอียดดังต่อไปนี้
STM32 – ST7735

ตรวจสอบการเชื่อมต่ออีกครั้งเพื่อให้แน่ใจว่าทุกอย่างเป็นไปตามที่ควรจะเป็น เนื่องจากอาจยุ่งยากเล็กน้อย เมื่อทำเสร็จแล้ว เราจะดำเนินการตั้งค่าบอร์ด STM32 เพื่อเขียนโปรแกรมด้วย Arduino IDE
การตั้งค่า Arduino IDE สำหรับ STM32
- เช่นเดียวกับบอร์ดส่วนใหญ่ที่ไม่ได้ผลิตโดย Arduino จำเป็นต้องทำการตั้งค่าเล็กน้อยก่อนจึงจะสามารถใช้งานบอร์ดกับ Arduino IDE ได้
- นี่เกี่ยวข้องกับการติดตั้งบอร์ด file ไม่ว่าจะผ่านทาง Arduino Board Manager หรือดาวน์โหลดจากอินเทอร์เน็ตและคัดลอก fileเข้าไปในโฟลเดอร์ฮาร์ดแวร์
- เส้นทางของ Board Manager นั้นน่าเบื่อน้อยกว่า และเนื่องจาก STM32F1 อยู่ในรายชื่อบอร์ด เราจึงจะเลือกเส้นทางนั้น เริ่มต้นด้วยการเพิ่มลิงก์สำหรับบอร์ด STM32 ลงในรายการการตั้งค่า Arduino
- ไปที่ File -> ตั้งค่า จากนั้นใส่สิ่งนี้ URL ( http://dan.drown.org/stm32duino/package_STM32duino_index.json ) ในกล่องตามที่ระบุด้านล่างแล้วคลิกตกลง

- ตอนนี้ไปที่เครื่องมือ -> บอร์ด -> ตัวจัดการบอร์ด มันจะเปิดกล่องโต้ตอบพร้อมแถบค้นหา ค้นหา STM32F1 และติดตั้งแพ็คเกจที่สอดคล้องกัน

- ขั้นตอนการติดตั้งจะใช้เวลาไม่กี่วินาที หลังจากนั้น บอร์ดควรจะพร้อมให้เลือกภายใต้รายการบอร์ด Arduino IDE
รหัส
- โค้ดจะเขียนในลักษณะเดียวกับการเขียนแบบร่างอื่นๆ สำหรับโปรเจ็กต์ Arduino โดยมีความแตกต่างเพียงอย่างเดียวคือวิธีอ้างอิงพิน
- เพื่อให้สามารถพัฒนาโค้ดสำหรับโครงการนี้ได้อย่างง่ายดาย เราจะใช้ไลบรารีสองรายการซึ่งเป็นการดัดแปลงไลบรารี Arduino มาตรฐานทั้งคู่เพื่อให้เข้ากันได้กับ STM32
- เราจะใช้เวอร์ชันแก้ไขของ Adafruit GFX และไลบรารี Adafruit ST7735
- คุณสามารถดาวน์โหลดไลบรารีทั้งสองได้จากลิงก์ที่แนบมากับไลบรารี ตามปกติ ฉันจะทำการแบ่งย่อยโค้ดแบบสั้น ๆ
- เราเริ่มต้นโค้ดโดยนำเข้าไลบรารีทั้งสองที่เราจะใช้

- ถัดไป เราจะกำหนดพินของ STM32 ที่จะเชื่อมต่อกับพิน CS, RST และ DC ของ LCD

- ถัดไป เราจะสร้างคำจำกัดความสีบางส่วนเพื่อให้ง่ายต่อการใช้สีตามชื่อในโค้ดในภายหลังแทนที่จะใช้ค่าเลขฐานสิบหก

- ต่อไป เราจะกำหนดจำนวนการวนซ้ำที่เราต้องการให้บอร์ดดำเนินการพร้อมกับระยะเวลาการรีเฟรชสำหรับแถบความคืบหน้าที่จะใช้งาน

- เมื่อทำเสร็จแล้ว เราจะสร้างอ็อบเจ็กต์ของไลบรารี ST7735 ซึ่งจะใช้เพื่ออ้างอิงการแสดงผลตลอดทั้งโครงการ
- นอกจากนี้เรายังระบุพินของ STM32 ที่ปุ่มกดเชื่อมต่ออยู่และสร้างตัวแปรเพื่อเก็บสถานะของมัน

- เมื่อทำเสร็จแล้ว เราจะย้ายไปที่ฟังก์ชัน void setup()
- เราเริ่มต้นด้วยการตั้งค่า pinMode() ของพินที่ปุ่มกดเชื่อมต่ออยู่ โดยเปิดใช้งานตัวต้านทานดึงขึ้นภายในบนพิน เนื่องจากปุ่มกดจะเชื่อมต่อกับกราวด์เมื่อกด

- ขั้นต่อไป เราจะเริ่มต้นการสื่อสารแบบอนุกรมและหน้าจอ โดยตั้งค่าพื้นหลังของจอแสดงผลเป็นสีดำ และเรียกใช้ฟังก์ชัน print () เพื่อแสดงอินเทอร์เฟซ

- ถัดไปคือฟังก์ชัน void loop() ฟังก์ชัน void loop ค่อนข้างเรียบง่ายและสั้น เนื่องจากใช้ไลบรารี/ฟังก์ชัน
- เราเริ่มต้นด้วยการอ่านสถานะของปุ่มกด หากกดปุ่มแล้ว เราจะลบข้อความปัจจุบันบนหน้าจอโดยใช้ฟังก์ชัน removePressKeyText() และวาดแถบความคืบหน้าที่เปลี่ยนแปลงโดยใช้ฟังก์ชัน drawBar()
- จากนั้นเราจะเรียกฟังก์ชันการคำนวณเริ่มต้นเพื่อรับและแสดงค่าของ Pi พร้อมกับเวลาที่ใช้ในการคำนวณ

- หากไม่ได้กดปุ่ม อุปกรณ์จะยังคงอยู่ในโหมดไม่ได้ใช้งาน โดยหน้าจอจะต้องกดปุ่มเพื่อโต้ตอบกับอุปกรณ์

- ในที่สุด จะแทรกการหน่วงเวลาไว้ที่จุดสิ้นสุดของลูป เพื่อให้มีเวลาสักนิดก่อนที่จะร่าง "ลูป"

- ส่วนที่เหลือของโค้ดเป็นฟังก์ชันที่เรียกเพื่อให้บรรลุงานตั้งแต่การวาดแถบไปจนถึงการคำนวณ Pi
- ฟังก์ชันส่วนใหญ่เหล่านี้ได้รับการครอบคลุมอยู่ในบทช่วยสอนอื่นๆ ที่เกี่ยวข้องกับการใช้จอแสดงผล ST7735 แล้ว






- โค้ดทั้งหมดสำหรับโครงการมีอยู่ด้านล่างและแนบไว้ในส่วนดาวน์โหลด


การอัพโหลดโค้ดไปยัง STM32
- การอัปโหลดสเก็ตช์ไปยัง STM32f1 ค่อนข้างซับซ้อนเมื่อเทียบกับบอร์ดมาตรฐานที่เข้ากันได้กับ Arduino ในการอัปโหลดโค้ดไปยังบอร์ด เราต้องใช้ตัวแปลง USB เป็นอนุกรมที่ใช้ FTDI
- เชื่อมต่อตัวแปลง USB เป็นอนุกรมเข้ากับ STM32 ตามที่แสดงในแผนผังด้านล่าง

นี่คือแผนที่การเชื่อมต่อแบบพินต่อพิน
เอฟทีดีไอ-STM32
- เมื่อทำเสร็จแล้ว เราจะเปลี่ยนตำแหน่งจัมเปอร์สถานะของบอร์ดเป็นตำแหน่งที่ 1 (ดังที่แสดงในภาพ gif ด้านล่าง) เพื่อวางบอร์ดในโหมดการเขียนโปรแกรม
- กดปุ่มรีเซ็ตบนบอร์ดหนึ่งครั้งหลังจากนี้ และเราก็พร้อมอัปโหลดโค้ด

- บนคอมพิวเตอร์ ตรวจสอบให้แน่ใจว่าคุณเลือก “บอร์ด Generic STM32F103C” และเลือก Serial สำหรับวิธีการอัปโหลด หลังจากนั้นคุณก็สามารถกดปุ่มอัปโหลดได้

- เมื่อการอัพโหลดเสร็จสิ้น ให้เปลี่ยนสถานะจัมเปอร์เป็นตำแหน่ง “โอ” การกระทำนี้จะทำให้บอร์ดเข้าสู่โหมด “ทำงาน” และควรจะเริ่มทำงานตามโค้ดที่อัปโหลด
- เมื่อถึงจุดนี้ คุณสามารถถอดสาย FTDI ออกและจ่ายไฟให้กับบอร์ดผ่าน USB ได้ ในกรณีที่โค้ดไม่ทำงานหลังจากจ่ายไฟ โปรดตรวจสอบว่าคุณได้คืนค่าจัมเปอร์อย่างถูกต้องแล้วและจ่ายไฟให้กับบอร์ดอีกครั้ง
การสาธิต
- เมื่อโค้ดเสร็จสมบูรณ์แล้ว ให้ทำตามขั้นตอนการอัปโหลดตามที่อธิบายไว้ด้านบนเพื่ออัปโหลดโค้ดไปยังการตั้งค่าของคุณ
- คุณควรจะเห็นการแสดงผลขึ้นมาดังที่แสดงในภาพด้านล่าง

- กดปุ่มเพื่อเริ่มการคำนวณ คุณจะเห็นแถบความคืบหน้าค่อยๆ เลื่อนไปจนสุด
- เมื่อสิ้นสุดกระบวนการจะแสดงค่า Pi พร้อมเวลาที่ใช้ในการคำนวณ

- โค้ดเดียวกันนี้ใช้กับ Arduino Uno ผลลัพธ์จะแสดงในรูปภาพด้านล่าง

- เมื่อเปรียบเทียบค่าทั้งสองนี้ เราจะเห็นว่า “Blue Pill” เร็วกว่า Arduino Uno ถึง 7 เท่า
- ซึ่งทำให้เหมาะอย่างยิ่งสำหรับโครงการที่เกี่ยวข้องกับการประมวลผลหนักและมีข้อจำกัดด้านเวลา
- ขนาดเล็กของยาเม็ดสีน้ำเงินยังทำหน้าที่เป็นตัวช่วยอีกด้วยtagเนื่องจากมันมีขนาดใหญ่กว่า Arduino Nano เพียงเล็กน้อยเท่านั้น และสามารถใช้ในสถานที่ที่ Nano ไม่เร็วพอ
เอกสาร / แหล่งข้อมูล
![]() |
บอร์ดพัฒนาระบบขั้นต่ำ STM32 STM32F103C8T6 [พีดีเอฟ] คู่มือการใช้งาน STM32F103C8T6 บอร์ดพัฒนาระบบขั้นต่ำ, STM32F103C8T6, บอร์ดพัฒนาระบบขั้นต่ำ, บอร์ดพัฒนาระบบ, บอร์ดพัฒนา, บอร์ด |

