volatile ใช้ยังไง

  • 4 Replies
  • 3005 Views
*

Offline zero

  • **
  • 72
    • View Profile
volatile ใช้ยังไง
« on: May 04, 2015, 07:57:48 am »
ในภาษา C คำสั่ง volatile ใช้ยังไงกันแน่ครับ งงมากๆ และต่างกับตัวแปรแบบ static ยังไง
อ่านจาก http://en.wikipedia.org/wiki/Volatile_(computer_programming) แล้ว ยังไม่ค่อยเข้าใจเลย ท่านใดช่วยให้ความกระจ่างหน่อยครับ

*

Offline firmware.c

  • *****
  • 181
  • Firmware Design
    • View Profile
Re: volatile ใช้ยังไง
« Reply #1 on: May 04, 2015, 08:43:18 am »
volatile เป็น modifier ใช้เมื่อไม่ต้องการให้ compiler optimize ตัวแปรนั้นๆ
หลักๆใช้กับ

1) ตัวแปรที่ใช้ร่วมกันระหว่าง main กับ interrupt (ถูก modify ใน ISR)
2) ใช้กับ Global variables ระหว่าง task ใน multi-threaded programming
3) ใช้กับ Memory-mapped peripheral registers ต่างๆ

ต่างจาก static โดยสิ้นเชิง แต่ใช้ร่วมกันกับ static ได้ครับ
IAR Embedded Workbench for ARM
AVR-Studio + AVR-GCC
CodeBlocks + MinGw
CodeBlocks + Gtk+

*

Offline zero

  • **
  • 72
    • View Profile
Re: volatile ใช้ยังไง
« Reply #2 on: May 07, 2015, 10:59:44 am »
volatile เป็น modifier ใช้เมื่อไม่ต้องการให้ compiler optimize ตัวแปรนั้นๆ
หลักๆใช้กับ

1) ตัวแปรที่ใช้ร่วมกันระหว่าง main กับ interrupt (ถูก modify ใน ISR)
2) ใช้กับ Global variables ระหว่าง task ใน multi-threaded programming
3) ใช้กับ Memory-mapped peripheral registers ต่างๆ

ต่างจาก static โดยสิ้นเชิง แต่ใช้ร่วมกันกับ static ได้ครับ

ขอบคุณท่าน firmware.c มากครับ เข้าใจขึ้นมากเลยครับ เยี่ยมจริงๆ

Re: volatile ใช้ยังไง
« Reply #3 on: May 13, 2015, 04:42:38 pm »
ขอเสริมครับ volatile เป็นการบอก compiler ว่าไม่ต้องมายุ่งกับมัน หรือ ไม่ต้องมา optimize มันครับ..
ส่วนใหญ่ที่ผมใช้งานจะเป็นการจองหน่วยความจำ พวก mapped into RAM..ครับ

Re: volatile ใช้ยังไง
« Reply #4 on: August 05, 2015, 03:33:32 pm »
ข้อมูลที่ดีมากเลยครับ