แนะนำหนังสือการใช้งานไมโครคอนโทรลเลอร์STM32+ภาษาที่ต้องใช้งาน

  • 6 Replies
  • 1733 Views
ต้องการ หนังสือ หรือเอกสารสอนการใช้งานไมโครคอนโทรลเลอร์ เริ่มจาก0เลยครับ ไม่มีพื้นฐานด้านนี้เลย โปรแกรมที่ใช้ STM32CubeMX+Systemworkbench บอร์ดSTM32F3-Discovery

*

Offline dec

  • **
  • 67
    • View Profile
STM32CubeMX กับ System Workbench for STM32 ดูเหมือนจะยังไม่มีหนังสือเล่มไหนออกมานะครับ

หนังสือที่มีอย่างเช่น ปฏิบัติการไมโครคอนโทรลเลอร์ ARM Cortex-M3 เอง มันอ้างอิงจากชิป STM32F1 ซึ่งก็เก่ามากแล้ว
มันไม่ได้สอนใช้งาน STM32CubeMX กับ System Workbench for STM32 ด้วย

จะเริ่่มหัดเขียน STM32 โดยใช้ Library จาก ST (STM32Cube) ตั้งแต่ 0 ในช่วงนี้อาจจะลำบากหน่อย
เพราะเดี๋ยวนี้ไม่ค่อยได้รับความนิยมในหมู่ Hobby แล้ว เทรนตอนนี้มันไปทาง Arduino และ Raspberry Pi
หรือไม่ก็ใช้พวก STM32duino (เอา Arduino IDE เขียนโปรแกรมลง STM32 : http://www.stm32duino.com)
กับ mbed (เป็น Platform สำหรับ ARM Cortex-M ที่พัฒนาโดย ARM เอง ใช้ภาษา C++ เหมือน Arduino)
แต่ในโปรดักชั่นก็ยังมีการใช้ Library จาก ST กันอยู่ เพราะไม่มีปัญหาเรื่องลิขสิทธิ์ดี

------------

ถ้าต้องการจะใช้งาน STM32CubeMX กับ System Workbench for STM32 จริงๆ ซึ่งที่พอจะแนะนำได้คือให้หัดใช้
System Workbench for STM32 ก่อน ซึ่งเป็น IDE ที่ใช้งานยากหน่อย ควรจะมีพื้นฐานในการใช้งาน Eclipse
และการใช้งาน makefile มาก่อน เพราะตัวมันเองก็เป็น Eclipse + Compiler arm-none-eabi + openocd + plugin ที่พัฒนาโดย AC6
ซึ่งมีข้อดีตรงที่เป็น IDE ฟรี

เริ่มแรกยังไม่ต้องสร้าง Project อะไร ไปโหลด STM32CubeF3 มาก่อน แล้วพยายาม Import ตัวอย่างที่อยู่ใน
Project/ชื่อบอร์ด/Example เข้ามาใน System Workbench for STM32 ตามลิ้ง

http://www.openstm32.org/Importing%2Ba%2BSTCubeMX%2Bgenerated%2Bproject

จนสามารถ Build และเข้า Debug Mode ได้ ตอนนี้ควรทำการคุ้นเคยกับชิป STM32 ไปก่อน โดยการแก้โปรเจ็กตัวอย่างนี่แหละ
Peripheral พื้นฐานที่ควรรู้และใช้งานเป็นในตอนแรกคือ GPIO กับ EXTI, USART, TIM, SPI และ I2C
ลองศึกษาและปรับแก้มันให้ได้การทำงานอย่างที่ต้องการไปก่อนเชี่ยวชาญระดับหนึ่งแล้วค่อยไปใช้ STM32CubeMX
ในการสร้าง Project เองตามคลิปนี้

https://www.youtube.com/watch?v=BJdXR0Al6os

สร้าง Project แล้วก็ Import เข้า System Workbench for STM32 เหมือนกับทำ Project  ตัวอย่างนั่นแหละครับ

*

Offline TaoTao

  • ***
  • 231
    • View Profile
System Workbench อยากใช้งานเป็นจัง
ลองเล่นละ ลงและลบ.. ตั้งหลายรอบ Tool เยอะดีแท้ ตาลายเจงๆ
ไม่ไหว หรือเราคงแก่ละ  ::)

เคยได้ใช้ ไอ้ อะไรนะ coco cookcook ไรนี้แหล่ะ แต่ก็ ไม่เข้ามือ

สุดท้ายเลย สำหรับผม จบที่ CUBE + KEIL  ;D
ตัวฟรี.. ได้ที่ 32kB ครับ ถ้าโปรเจคไม่ใหญ่
และไม่ได้มีโคด เกี่ยวกับ String - ตัวอักษร อะไรมากมายน่าจะเพียงพอ

ลอง CUBE + KEIL ไหมครับ
ถ้าว่างเดี๋ยวอาจทำ คลิปสั้นๆ สอนเบื้องต้นให้
เบื้องต้นจริงๆ นะ เพราะเป็นแค่นี้ ไม่ได้เรียนมาทางนี้  ;D

อาจจะ 32F051 32F103C8 ไม่ก็ 32F030 คือบอร์ดที่มีในมือ
รับรอง ใช้งานมันได้ ภายใน 10 นาที

ส่วนสำคัญสุด ที่ต้องเข้าใจผมว่า คือคำสั่ง "ระดับบิต" คือ & กับ |
และ C-Language ครับ ถ้าได้ก็ง่ายแล้วขึ้นแหล่ะ
อย่าง C สมัยผม ไม่มีเรียน เรียนมาแต่ Pascal

เช่นว่า ต้องการ ไอ้บิตตัวนี้เป็น 0 หรือ เป็น 1 ต้องทำไง ประมาณนี้
อีกหัวข้อ อันนี้ ต้องรู้ มันคือพระเอกเลย.. การ Interrupt ครับ ได้ใช้แน่นอน

ทีนี้ อยากใช้ Function อะไร เปิด DataSheet + RefMan
และอาจพ่วงด้วย Errata เพราะบางที Product เค้าเอง ก็มีจุดอ่อน-บกพร่อง ด้านนั้นๆ
แล้ว พิมพ์ตามมันเลย นี่คือวิธีที่ผมใช้นะ

เพราะ CUBE เอง ไม่สมบูรณ์ทุก Feature นะครับ
แต่ช่วย Initial ได้ดีมาก ซึ่งมาครึ่งทางแล้วแหล่ะ

ที่เหลือ เราอาจต้อง สร้างเอง.. ด้วยแรงตัณหา ครับ  ;D

*

Offline TaoTao

  • ***
  • 231
    • View Profile
อ้อ STM ดีอยู่อย่าง เอาให้แน่นๆ สักเบอร์นึงพอครับ
เบอร์ที่ Feature ครบๆ จะดีมาก เช่น มี ADC DAC SPI I2C AWU RTC นึกไม่ออกละ
ทีนี้ หากจำเป็นต้องใช้เบอร์อื่นๆ สบายเลย

มันแกะกันมาเกือบทั้งหมด ต่างตระกูล.. ต่างเพียงชื่อ bit.. เท่านั้นเอง


System Workbench อยากใช้งานเป็นจัง
ลองเล่นละ ลงและลบ.. ตั้งหลายรอบ Tool เยอะดีแท้ ตาลายเจงๆ
ไม่ไหว หรือเราคงแก่ละ  ::)

เคยได้ใช้ ไอ้ อะไรนะ coco cookcook ไรนี้แหล่ะ แต่ก็ ไม่เข้ามือ

สุดท้ายเลย สำหรับผม จบที่ CUBE + KEIL  ;D
ตัวฟรี.. ได้ที่ 32kB ครับ ถ้าโปรเจคไม่ใหญ่
และไม่ได้มีโคด เกี่ยวกับ String - ตัวอักษร อะไรมากมายน่าจะเพียงพอ

ลอง CUBE + KEIL ไหมครับ
ถ้าว่างเดี๋ยวอาจทำ คลิปสั้นๆ สอนเบื้องต้นให้
เบื้องต้นจริงๆ นะ เพราะเป็นแค่นี้ ไม่ได้เรียนมาทางนี้  ;D

อาจจะ 32F051 32F103C8 ไม่ก็ 32F030 คือบอร์ดที่มีในมือ
รับรอง ใช้งานมันได้ ภายใน 10 นาที

ส่วนสำคัญสุด ที่ต้องเข้าใจผมว่า คือคำสั่ง "ระดับบิต" คือ & กับ |
และ C-Language ครับ ถ้าได้ก็ง่ายแล้วขึ้นแหล่ะ
อย่าง C สมัยผม ไม่มีเรียน เรียนมาแต่ Pascal

เช่นว่า ต้องการ ไอ้บิตตัวนี้เป็น 0 หรือ เป็น 1 ต้องทำไง ประมาณนี้
อีกหัวข้อ อันนี้ ต้องรู้ มันคือพระเอกเลย.. การ Interrupt ครับ ได้ใช้แน่นอน

ทีนี้ อยากใช้ Function อะไร เปิด DataSheet + RefMan
และอาจพ่วงด้วย Errata เพราะบางที Product เค้าเอง ก็มีจุดอ่อน-บกพร่อง ด้านนั้นๆ
แล้ว พิมพ์ตามมันเลย นี่คือวิธีที่ผมใช้นะ

เพราะ CUBE เอง ไม่สมบูรณ์ทุก Feature นะครับ
แต่ช่วย Initial ได้ดีมาก ซึ่งมาครึ่งทางแล้วแหล่ะ

ที่เหลือ เราอาจต้อง สร้างเอง.. ด้วยแรงตัณหา ครับ  ;D

รอชมคลิปครับ

*

Offline TaoTao

  • ***
  • 231
    • View Profile
System Workbench อยากใช้งานเป็นจัง
ลองเล่นละ ลงและลบ.. ตั้งหลายรอบ Tool เยอะดีแท้ ตาลายเจงๆ
ไม่ไหว หรือเราคงแก่ละ  ::)

เคยได้ใช้ ไอ้ อะไรนะ coco cookcook ไรนี้แหล่ะ แต่ก็ ไม่เข้ามือ

สุดท้ายเลย สำหรับผม จบที่ CUBE + KEIL  ;D
ตัวฟรี.. ได้ที่ 32kB ครับ ถ้าโปรเจคไม่ใหญ่
และไม่ได้มีโคด เกี่ยวกับ String - ตัวอักษร อะไรมากมายน่าจะเพียงพอ

ลอง CUBE + KEIL ไหมครับ
ถ้าว่างเดี๋ยวอาจทำ คลิปสั้นๆ สอนเบื้องต้นให้
เบื้องต้นจริงๆ นะ เพราะเป็นแค่นี้ ไม่ได้เรียนมาทางนี้  ;D

อาจจะ 32F051 32F103C8 ไม่ก็ 32F030 คือบอร์ดที่มีในมือ
รับรอง ใช้งานมันได้ ภายใน 10 นาที

ส่วนสำคัญสุด ที่ต้องเข้าใจผมว่า คือคำสั่ง "ระดับบิต" คือ & กับ |
และ C-Language ครับ ถ้าได้ก็ง่ายแล้วขึ้นแหล่ะ
อย่าง C สมัยผม ไม่มีเรียน เรียนมาแต่ Pascal

เช่นว่า ต้องการ ไอ้บิตตัวนี้เป็น 0 หรือ เป็น 1 ต้องทำไง ประมาณนี้
อีกหัวข้อ อันนี้ ต้องรู้ มันคือพระเอกเลย.. การ Interrupt ครับ ได้ใช้แน่นอน

ทีนี้ อยากใช้ Function อะไร เปิด DataSheet + RefMan
และอาจพ่วงด้วย Errata เพราะบางที Product เค้าเอง ก็มีจุดอ่อน-บกพร่อง ด้านนั้นๆ
แล้ว พิมพ์ตามมันเลย นี่คือวิธีที่ผมใช้นะ

เพราะ CUBE เอง ไม่สมบูรณ์ทุก Feature นะครับ
แต่ช่วย Initial ได้ดีมาก ซึ่งมาครึ่งทางแล้วแหล่ะ

ที่เหลือ เราอาจต้อง สร้างเอง.. ด้วยแรงตัณหา ครับ  ;D

รอชมคลิปครับ
ผิดจากที่เคยบอกไว้ ว่า 10 นาที เพราะคอมผม ไม่มีไมล์ เลยพิมพ์เอา
ขี้เกียจหาสาเหตุ ตอนท้ายๆ คลิปครับ
อยากรู้ว่า สาเหตุอะไร ลองชมครับ  O_o!
https://youtu.be/QZGfhKpoJFE