- การเลือกและดาวน์โหลดแพลตฟอร์มการพัฒนาที่จำเป็นสำหรับบอร์ด Nucleo64
- แผนภาพวงจรและการตั้งค่าฮาร์ดแวร์
- เริ่มต้นใช้งาน STM32CubeMX สำหรับ STM32 Nucleo64 Development Boards
- การเขียนโปรแกรม STM32 Nucleo64 Development Board โดยใช้ TrueSTUDIO
- STM32 Nucleo64 โปรแกรมควบคุม LED โดยใช้ปุ่มกด
- การดีบักและอัปโหลดรหัสไปยัง STM32 Necleo64 Development Board โดยใช้ TrueSTUDIO
พวกเราหลายคนน่าจะคุ้นเคยกับไมโครคอนโทรลเลอร์และบอร์ดพัฒนายอดนิยมเช่น Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 เป็นต้นอันที่จริงแล้วสำหรับคนส่วนใหญ่ Arduino จะเป็นบอร์ดพัฒนาตัวแรกของพวกเขา แต่เมื่อเราขุดลึกและเริ่มต้น การออกแบบอย่างมืออาชีพในไม่ช้าเราจะตระหนักถึงข้อ จำกัด ของ Arduino (เช่นค่าใช้จ่ายความคล่องตัวความเสถียรความเร็ว ฯลฯ) และเข้าใจถึงความจำเป็นในการเปลี่ยนไปใช้แพลตฟอร์มไมโครคอนโทรลเลอร์แบบดั้งเดิมเช่น PIC, STM, Renesas เป็นต้น
เราได้กล่าวถึงลำดับของบทเรียนไมโครคอนโทรลเลอร์ PIC ซึ่งแนะนำผู้เริ่มต้นเรียนรู้ไมโครคอนโทรลเลอร์ PIC ในทำนองเดียวกันเริ่มต้นด้วยบทความนี้เราจะวางแผนลำดับของบทช่วยสอนสำหรับคณะกรรมการพัฒนา STM32 Nucleo64ซึ่งสามารถช่วยให้ผู้เริ่มต้นเรียนรู้และพัฒนาโดยใช้แพลตฟอร์ม STM32 ได้ Nucleo64 Development Boards เป็นแพลตฟอร์มที่มีต้นทุนต่ำและใช้งานง่ายสำหรับนักพัฒนามืออาชีพและสำหรับมือสมัครเล่น หากคุณยังใหม่กับSTM32 Nucleo64 Development Boardsโปรดดูวิดีโอรีวิว Nucleo64 นี้เพื่อทำความเข้าใจพื้นฐานของบอร์ดนี้ก่อนดำเนินการต่อ วิดีโอยังสาธิตวิธีการตั้งโปรแกรมSTM32 โดยใช้ ARM Mbed Platform แต่สำหรับบทช่วยสอนนี้เราจะใช้แพลตฟอร์มอื่นที่ใช้งานได้ฟรีจาก ST Microelectronics ชื่อ TrueSTUDIO
หมายเหตุ: มีหลายรุ่นของ STM32 บอร์ดพัฒนา Nucleo64 มีคณะกรรมการเฉพาะที่ใช้ในการกวดวิชานี้เป็นNucleo-F030R8เราเลือกบอร์ดนี้เป็นหลักเนื่องจากมีต้นทุนต่ำ แม้ว่าคุณจะมีเวอร์ชันอื่นสิ่งที่กล่าวถึงในบทช่วยสอนส่วนใหญ่ก็เพียงพอแล้วสำหรับคุณในการเริ่มต้น
การเลือกและดาวน์โหลดแพลตฟอร์มการพัฒนาที่จำเป็นสำหรับบอร์ด Nucleo64
การเริ่มต้นใช้งานไมโครคอนโทรลเลอร์จะต้องมี IDE ในการเขียนโปรแกรมเช่นเรามี Arduino IDE สำหรับบอร์ด Arduino, Atmel Studio สำหรับไมโครคอนโทรลเลอร์ AVR, MP Lab สำหรับ PIC เป็นต้นดังนั้นที่นี่เราต้องมี IDE สำหรับบอร์ด STM32 Nucleo64 ของเราเพื่อทำการเขียนโปรแกรมและดีบัก ตระกูล STM32 ประกอบด้วยไมโครคอนโทรลเลอร์ 32 บิตที่รองรับ IDE และโซ่เครื่องมือต่อไปนี้:
- IAR Embedded Workbench®สำหรับARM® (EWARM)
- คีย์ MDK-ARM
- TrueSTUDIO
- Workbench ระบบสำหรับ STM32
สำหรับบทช่วยสอนของเราTrueSTUDIOจะถูกใช้สำหรับการเขียนรวบรวมและดีบักโค้ดเนื่องจากสามารถดาวน์โหลดและใช้งานได้ฟรีแม้ในโครงการเชิงพาณิชย์โดยไม่ต้องมีใบอนุญาต จากนั้นSTM32CubeMXจะถูกใช้เพื่อสร้างไดรเวอร์อุปกรณ์ต่อพ่วงสำหรับบอร์ด STM32 เพื่อให้การเขียนโปรแกรมเป็นเรื่องง่าย ในการอัปโหลดโปรแกรมของเรา (ไฟล์ฐานสิบหก) ไปยังบอร์ดพัฒนาของเราโดยปกติผู้คนจะใช้เครื่องมือยูทิลิตี้ STM32 ST-LINKแต่เราจะใช้ TrueSTUDIO ในการทำสิ่งนี้แทน TrueSTUDIO มีโหมดดีบักที่ช่วยให้โปรแกรมเมอร์สามารถอัพโหลดไฟล์ hex ไปยังบอร์ด STM32 ได้โดยตรง ทั้ง TrueSTUIO และ STM32CubeMX นั้นง่ายต่อการดาวน์โหลดเพียงไปที่ลิงค์ด้านล่างลงทะเบียนและดาวน์โหลดการตั้งค่า จากนั้นติดตั้งบนแล็ปท็อปของคุณ
- ดาวน์โหลด STM32Cube MX
- ดาวน์โหลด TrueSTUDIO
แผนภาพวงจรและการตั้งค่าฮาร์ดแวร์
ก่อนที่เราจะดำเนินการในส่วนซอฟต์แวร์และการเข้ารหัสเรามาเตรียมบอร์ดของเราสำหรับโครงการนี้ ดังที่ได้กล่าวไว้ก่อนหน้านี้ในบทความนี้เราจะควบคุม LED โดยใช้ปุ่มกด ตอนนี้หากคุณได้เห็นวิดีโอที่เชื่อมโยงด้านบนคุณควรทราบแล้วว่า STM32 Development Board ของคุณมีหมุดเชื่อมต่อสองชุดที่ด้านใดด้านหนึ่งเรียกว่าหมุด ST Morpho เราได้เชื่อมต่อปุ่มกดและ LED เข้ากับหมุดเหล่านี้ตามที่แสดงในแผนภาพวงจรด้านล่าง
การเชื่อมต่อวงจรเป็นเรื่องง่ายสำหรับโครงการนี้เราต้องเชื่อมต่อ LED ที่ PA5 ของ PORTA และสวิตช์ที่ PC13 ของ PORTC ตาม GND เมื่อทำการเชื่อมต่อแล้วการตั้งค่าการทดสอบของฉันจะมีลักษณะเช่นนี้
นอกจากนี้เรายังสามารถใช้ LED ในตัวและปุ่มกดบนบอร์ด ไฟ LED และปุ่มกดที่ติดตั้งในตัวเหล่านี้ยังเชื่อมต่อที่ขาเดียวกันดังที่แสดงในแผนภาพวงจร เราได้เพิ่มส่วนประกอบภายนอกเพื่อการปฏิบัติเท่านั้น แผนภาพพินด้านล่างของบอร์ดพัฒนา STM32จะเป็นประโยชน์ในการทราบว่าหมุด morpho แต่ละตัวเชื่อมต่อกับออนบอร์ด
เริ่มต้นใช้งาน STM32CubeMX สำหรับ STM32 Nucleo64 Development Boards
ขั้นตอนที่ 1:หลังการติดตั้งเปิด STM32CubeMX จากนั้นเลือกตัวเลือกบอร์ดการเข้าถึงเพื่อเลือกบอร์ด STM32
ขั้นตอนที่ 2:ค้นหาบอร์ดตามชื่อบอร์ด STM32 ของคุณเช่น NUCLEO-F030R8 และคลิกที่บอร์ดที่แสดงในภาพ หากคุณมีกระดานอื่นให้ค้นหาชื่อที่เกี่ยวข้อง ซอฟต์แวร์จะรองรับบอร์ดพัฒนา STM32 ทั้งหมดจาก ST Microelectronics
ขั้นตอนที่ 3:ตอนนี้คลิกที่ใช่ดังที่แสดงในภาพด้านล่างเพื่อเริ่มต้นอุปกรณ์ต่อพ่วงทั้งหมดในโหมดเริ่มต้น เราสามารถเปลี่ยนสิ่งที่ต้องการได้ในภายหลังตามที่โครงการของเราต้องการ
หลังจากคลิกที่ 'ใช่' หน้าจอจะคล้ายกับรูปภาพด้านล่างและหมุดสีเขียวแสดงว่าเริ่มต้นโดยค่าเริ่มต้น
ขั้นตอนที่ 4:ตอนนี้ผู้ใช้สามารถเลือกการตั้งค่าที่ต้องการจากหมวดหมู่ ในบทช่วยสอนนี้เราจะสลับ LED โดยใช้ปุ่มกด ดังนั้นเราต้องทำให้ขา LED เป็นเอาท์พุทและสวิทช์ขาเป็น input
คุณสามารถเลือกพินใดก็ได้ แต่ฉันกำลังเลือกPA5และเปลี่ยนสถานะเป็นGPIO_Outputเพื่อให้มันทำงานเป็นพินเอาต์พุตดังที่แสดงในภาพด้านล่าง
ในทำนองเดียวกันฉันกำลังเลือก PC13 เป็น GPIO_Input เพื่อให้ฉันสามารถอ่านสถานะของปุ่มกดของฉันได้
หรือเราสามารถกำหนดค่าพินได้จากแท็บพินเอาต์และคอนฟิกูเรชันตามที่แสดงด้านล่าง
ขั้นตอนที่ 5:ในขั้นตอนต่อไปผู้ใช้สามารถตั้งค่าความถี่ที่ต้องการสำหรับไมโครคอนโทรลเลอร์และพินตามออสซิลเลเตอร์ภายนอกและภายใน โดยค่าเริ่มต้นจะเลือกคริสตัลออสซิลเลเตอร์ภายใน8 MHzและด้วยการใช้ PLL 8 ตัวนี้จะถูกแปลงเป็น 48MHz ความหมายโดยปริยาย STM32 บอร์ดหรือไมโครคอนโทรลเลอร์และหมุดจะทำงานบน48MHz
ขั้นตอนที่ 6: ตอนนี้ย้ายไปอยู่ในผู้จัดการโครงการและตั้งชื่อให้กับโครงการที่ตั้งโครงการของคุณและเลือก toolchain หรือ IDE ที่นี่เราใช้ TrueSTUDIO ดังนั้นฉันจึงเลือกเช่นเดียวกับที่แสดงด้านล่าง
ขั้นตอนที่ 7:คลิกที่สร้างรหัสโดยวงกลมสีแดงในภาพด้านล่าง
ขั้นตอนที่ 8:ตอนนี้คุณจะเห็นป๊อปอัปตามที่กำหนดจากนั้นคลิกที่เปิดโครงการ แต่ต้องแน่ใจว่าคุณได้ติดตั้ง TrueSTUDIO ก่อนขั้นตอนนี้
การเขียนโปรแกรม STM32 Nucleo64 Development Board โดยใช้ TrueSTUDIO
ตอนนี้รหัสหรือโครงการของคุณจะเปิดขึ้นใน TrueSTUDIO โดยอัตโนมัติหาก TrueSTUDIO ขอตำแหน่งพื้นที่ทำงานจากนั้นระบุตำแหน่งพื้นที่ทำงานหรือไปกับตำแหน่งเริ่มต้น
ผู้ใช้จะเห็นหน้าจอด้านล่างจากนั้นต้องคลิกที่เครื่องหมายมุมสีแดง
และตอนนี้เราสามารถดูรหัสได้ใน TreuSTUDIO IDE ของเรา ทางด้านซ้ายใต้โฟลเดอร์ 'src' เราจะเห็นไฟล์โปรแกรมอื่น ๆ (ที่มีนามสกุล. c) ที่สร้างไว้สำหรับเราจาก STM32Cube เราต้องโปรแกรมไฟล์ main.c แม้ในไฟล์ main.c เราจะมีบางสิ่งที่ตั้งค่าไว้สำหรับเราโดย CubeMX เราต้องแก้ไขให้เหมาะกับโปรแกรมของเราเท่านั้น รหัสที่สมบูรณ์ภายในไฟล์ main.c มีให้ที่ด้านล่างของหน้านี้
STM32 Nucleo64 โปรแกรมควบคุม LED โดยใช้ปุ่มกด
เนื่องจากไดรเวอร์และรหัสที่จำเป็นทั้งหมดถูกสร้างขึ้นโดย STM32CubeMX เราจึงต้องกำหนดค่าขา LED เป็นเอาต์พุตและปุ่มกดเป็นอินพุตเท่านั้น โปรแกรมสำหรับควบคุม led โดยใช้ปุ่มกดควรเขียนในไฟล์ main.c โปรแกรมที่สมบูรณ์สามารถพบได้ที่ด้านล่างของหน้านี้ คำอธิบายของมันมีดังนี้
เราได้เขียนโค้ดสำหรับการสลับ LED โดยใช้ปุ่มกดเท่านั้น เพื่อให้บรรลุสิ่งนี้อันดับแรกเรากำหนดพินสำหรับ LED และปุ่มกด ที่นี่เราได้กำหนด LED ที่หมายเลข Pin 5 ของ PORTA
#define LED_PORT GPIOA # กำหนด LED_PIN GPIO_PIN_5
และกำหนดสวิตช์ที่ Pin Number 13 ของ PORTC
# กำหนด SW_PORT GPIOC # กำหนด SW_PIN GPIO_PIN_13
จากนั้นในฟังก์ชั่นหลักเราได้เริ่มต้นอุปกรณ์ต่อพ่วงที่ใช้ทั้งหมด
/ * เริ่มต้นอุปกรณ์ต่อพ่วงที่กำหนดค่าไว้ทั้งหมด * / MX_GPIO_Init (); MX_USART2_Init ();
จากนั้นอ่านปุ่มกดโดยใช้คำสั่ง if และหากพบปุ่มกด (ต่ำ) จากนั้น LED จะสลับสถานะ
ในขณะที่ (1) {/ * USER CODE END WHILE * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * รหัสผู้ใช้เริ่มต้น 3 * /}
ที่นี่ฟังก์ชัน HAL_GPIO_ReadPin (SW_PORT, SW_PIN) มีอาร์กิวเมนต์สองอาร์กิวเมนต์ตัวหนึ่งคือ PORT และอีกอันคือพินที่สวิตช์เชื่อมต่อและพินนี้ถูกกำหนดค่าเป็น INPUT ในขณะที่กำหนดค่าอุปกรณ์ต่อพ่วงใน STM32CubeMX
การดีบักและอัปโหลดรหัสไปยัง STM32 Necleo64 Development Board โดยใช้ TrueSTUDIO
ตอนนี้เชื่อมต่อบอร์ดของคุณกับคอมพิวเตอร์โดยใช้สายโปรแกรมเมอร์ เมื่อคุณเชื่อมต่อแล้วควรดาวน์โหลดไดรเวอร์ที่จำเป็นสำหรับบอร์ดโดยอัตโนมัติคุณสามารถตรวจสอบได้โดยใช้ตัวจัดการอุปกรณ์
จากนั้นกดไอคอนแก้ไขจุดบกพร่องที่ทำเครื่องหมายโดยวงกลมสีแดงในภาพด้านล่างเพื่อรวบรวมโปรแกรมและเข้าสู่โหมดดีบัก
ในโหมดแก้ไขข้อบกพร่องรหัสจะถูกอัปโหลดโดยอัตโนมัติ ตอนนี้เราจำเป็นต้องเรียกใช้รหัสโดยการกด 'Resume' หรือ F8 (ทำเครื่องหมายในวงจรสีแดงในภาพด้านล่าง)
ตอนนี้เราสามารถทดสอบการควบคุมของ LED ได้โดยกดปุ่มกด ตามรหัส LED ควรเปลี่ยนสถานะทุกครั้งที่คุณกดปุ่ม นอกจากนี้คุณยังสามารถดูการทำงานทั้งหมดได้ในวิดีโอที่เชื่อมโยงที่ด้านล่างของหน้านี้
หลังจากการทดสอบเราสามารถยุติโปรแกรมได้โดยกดที่ไอคอนยุติซึ่งทำเครื่องหมายด้วยวงกลมสีแดงในภาพด้านล่าง