© 2020,จารุต บุศราทิจ
ดูจากวันที่ของบทความเกี่ยวกับ ARM หลังสุดที่เขียนก็ปี 2550 อืม ... นานมากเลยเนอะ ... ครับ นาน วันนี้มาเริ่มกันใหม่กับการใช้ ARM Cortex-M3 ที่เมื่อก่อนเขียนงานกันซับซ้อน แต่เมื่อเวลาผ่านไปเนิ่นนาน ความยากเหล่านั้นถูกลดทอนด้วยเครื่องมือสมัยใหม่ ... ใช่แล้วครับ เราจะใช้ Arduino IDE เป็นเครื่องมือเขียนโปรแกรมกัน โดยในครั้งแรกนี้มาเริ่มใช้งานอุปกรณ์บนบอร์ดที่ติดตั้งเครื่องมือไว้ครบครันสำหรับการเริ่มต้นเรียนรู้ (นำไปใช้จริงได้แต่ด้วยการที่มีส่วนของอุปกรณ์ภายนอกเลยทำให้บอร์ดมีขนาดใหญ่ไปนิดนึง) รุ่น
ET-STM32F103
เป้าหมาย
- ติดตั้งไลบรารี STM32 กับ Arduino IDE
- ตั้งค่าการทำงานของ Arduino IDE
- เขียนโปรแกรมใช้ LED 8 ดวงบนบอร์ด ET-STM32F103
อุปกรณ์ที่ต้องใช้
มาติดตั้งเครื่องมือสำหรับพัฒนาโปรแกรมของ STM32 กันเถอะ
- เพิ่ม json สำหรับติดตั้งชุดพัฒนาของ STM32 F103 โดยเริ่มจากไปที่เมนู File เลือก Preferences
- ที่ช่อง Additional Boards Manager URLs ให้ใส่ URLs ดังนี้
http://dan.drown.org/stm32duino/package_STM32duino_index.json
หลังจากนั้นคลิกปุ่ม OK
- ติดตั้งบอร์ดให้ Arduino IDE รู้จักด้วยการไปที่เมนู Tools เลือกที่ Board " ...ชื่อที่ถูกเลือกใช้งานอยู่... " และเลือกรายการเมนูย่อยชื่อ Boards Manager...
- ทำการค้นหาด้วยคำค้น STM32 และรอจนกว่าจะขึ้นรายการเลือกทั้งหมด
- เนื่องจากบอร์ดของเราเป็น Cortex-M3 ในตระกูล STM32F103RBx จึงต้องเลือกรายการเป็น STM32F1xx/GD32F1xx boards หลังจากนั้นคลิก Installs
- และแล้วช่วงที่น่าเบื่อและยาวนานก็มาถึง ...รอนะ รอ ... (คร่อก)
เอาล่ะตั้งค่าบอร์ดกันเนอะ
- อย่างแรกเลยคือเลือกประเภทบอร์ด ถ้าจำได้คือ เข้าที่เมนู Tools เลือกรายการ Board " ...ชื่อที่ถูกเลือกใช้งานอยู่... " แล้วในรายการย่อยจงหาบอร์ด Generic STM32F103R ให้พบ
- ตอนนี้เราจะได้ข้อมูลของบอร์ดเป็นตามภาพแล้วล่ะ ... แต่ ... ยังไม่เสร็จจร้า....
- เลือก Port สื่อสารก่อน ... ตรวจสอบก่อนครับว่าได้เสียบ ET-USB-RS232-mini เข้ากับเครื่องคอมพิวเตอร์ และอีกด้านจิ้มเข้ากับบอร์ด ET-STM32F103 ตามรูปไหมเอ่ย
...เกือบลืมไปครับ เสียบ ET-SWITCHING ADAPTER 5V 2A Type H ด้วยนะครับ
คราวนี้มาเลือกพอร์ตสื่อสารกันได้เลยครับ (ถ้าไม่ขึ้น.. ก็ตรวจสอบด้วยว่าไดรเวอร์เรียบร้อยไหม ...โอย ...ปัญหาเยอะมากมาย สู้ ๆ น่อ)
- เอาล่ะมากำหนดเรื่องของไอซีประจำบอร์ดกันนะครับ ...เจ้า ET-STM32F103 ใช้ไอซีรุ่น STM32F103RB ซึ่งมีรอม (flash ROM) ให้เราใช้เขียนโปรแกรม 128KB และมีแรม (RAM) ให้ใช้งาน 20KB
- สุดท้ายอย่าลืมน่อ เพราะเราต้องตั้งค่าว่าเราอัพโปรแกรมผ่านพอร์ตด้วยการสื่อสาร Serial ธรรมดา ไม่ได้ใช้เครื่องโปรแกรมชิพ
.... เยส พร้อม ๆ
เขียนโค้ดกันเลย
เนื่องจากบอร์ด
ET-STM32F103 เชื่อมต่อกับแอลอีดีมาให้ใช้งานดังภาพ
จะเห็นว่า ตัวอักษรกำกับเอาไว้คือ PB8, PB9, ..., PB14, PB15 นั่นหมายความว่าพอร์ต B ของ STM32F103 ของเราเชื่อมต่อกับอุปกรณ์แอลอีดีเหล่านี้ด้วยขาที่ 8 ถึง 15 ของพอร์ต B และที่สำคัญคือตรวจสอบด้วยนะครับว่าได้ Enable LED เอาไว้ (ดูจัมเปอร์สีเหลืองด้านซ้ายล่างของภาพน่อ) ... เอาล่ะเขียนโค้ดกันครับ
ในขั้นตอน setup() เราวนรอบโดยให้ตัวแปร pin มีค่าเป็น PB8 ถึง PB15 หลังจากนั้นให้แต่ละขาทำงานเป็น OUTPUT และสร้างฟังก์ชันชื่อ set_led( ) ขึ้นมาเพื่อความสะดวกในการกำหนดให้ขาใดมีสถานะของสัญญาณดิจิทัลเป็น HIGH หรือ LOW สุดท้ายใน loop() เรามีการอาศับตัวแปรชื่อ status ซึ่งเป็นตัวแปรภายนอก มีค่าเริ่มต้นเป็น true ด้วยเหตุนี้ ถ้า status เป็นจริงเราสั่งให้ทุกขามีสถานะดิจิทัลเป็น HIGH แล้วปรับค่า status เป็น false เพื่อใช้ในการทำงานรอบถัดไป ดังนั้น รอบถัดไปตัวแปร status ไม่เป็น true จึงไปทำงานที่ else ซึ่งเราเขียนโค้ดให้เปลี่ยนสถานะสัญญาณดิจิทัลของแต่ละขาเป็น LOW แล้วกลับค่าของ status เป็น true เพื่อรอบถัดไปจะได้กลับไปกลับมาเป็นอย่างนี้ไปเรื่อย ๆ โดยคำสั่งเปลี่ยนสถานะสัญญาณดิจิทัลถูกเขียนไว้ในฟังก์ชัน set_led( ) ซึ่งคำสั่งนั้นคือ digitalWrite( หมายเลขขา, ค่าสถานะสัญญาณดิจิทัล) และคำสั่งสุดท้ายของฟังก์ชัน loop( ) คือทำการหน่วงเวลา 500 มิลลิวินาที เพื่อจะได้ดูทันว่าเอ้อมันกระพริบจริง
มาคอมไพล์โปรแกรมและอัพเข้าบอร์ดกัน
- ให้ลองคอมไพล์ก่อนด้วยการคลิกที่ปุ่มเครื่องหมายถูก ที่เรียกอย่างเป็นทางการว่า Verify ถ้าโปรแกรมไม่ผิดพลาดก็จะได้ไปขั้นตอนถัดไป แต่ถ้าผิดพลาดก็ตรวจสอบให้โปรแกรมตรงกับโค้ดก่อนนะครับ
- เมื่อโปรแกรมถูกต้อง เราก็ไปกดสวิตช์ BOOT0 (ถ้าสำเร็จแอลอีดีสีแดงจะติด ถ้าดับแสดงว่าสวิตช์ไม่ได้ถูกกดนะจร้า) กัน และกดปุ่ม RESET
>
ตอนนี้พร้อมสำหรับการอัพโหลดโปรแกรมจากเครื่องคอมพิวเตอร์ของเราแล้วล่ะ
- คลิกปุ่ม upload (เป็นภาพลูกศรขวา ซึ่งอยู่ด้านขวาของปุ่ม Verify) แล้วสถานะมากมายจะแสดงดังนี้เลย (มองไม่เห็นก็คลิกดูภาพใหญ่กันนะครับ)
- ตอนนี้โปรแกรมของเราถูกอัพโหลดเข้าบอร์ดเรียบร้อยแล้ว คราวนี้ต้องมายกเลิกโหมดการโปรแกรมชิพกันครับ ด้วยการกดที่สวิตช์ BOOT0 อีกครั้งเพื่อให้แอลอีดีดับ แล้วกด RESE
ผลลัพธ์ของโปรแกรม
เมื่อโปรแกรมทำงานจะสลับการแสดงแอลอีดีให้สว่างและสั่งดับหลอดแอลอีดี วนสลับกันไปมา
สรุป
วันนี้เราสามารถติดตั้งชุดพัฒนาสำหรับ STM32F103 ได้สำเร็จ ตั้งค่าการทำงานสำเร็จ โปรแกรมชิพสำเร็จ รันโปรแกรมสำเร็จ ... (ดีใจไหมครับ) ครั้งหน้าเราจะใช้งานตัวถัดไปของบอร์ด คือ ADC1 ครับ ก็จะจบเรื่องของบอร์ด
ET-STM32F103 และอีก 2 ตอนจะเป็นการใช้ LCD แบบ I
2C และเซ็นเซอร์อุณหภูมิแบบ 1-Wire ด้วยไอซี DS1820 ล่ะครับผม
:----: บทความ ARM :----: บทความตอนถัดไป (next) :----: