中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
初級會員
|
您好
XC8T的文件提到 "中斷所使用的變數需加入 volatile 的宣告" 請問是任何會在中斷函數內 用到的變數都需 加入 volatile 的宣告 嗎? 或是 有關 暫存器的變數才需加入??
發表於: 2020/9/7 16:52
|
|||
|
Re: 中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
資深會員
|
參考一下 維基 對 volatile的解釋
想像一下 變數 在主程式只是作為跳躍判斷的依據而不會有任何變更(只在中斷內變更) 此時如沒下 volatile宣告, 變數不就被 "最佳化" 給幹掉了 ? .
發表於: 2020/9/8 2:04
|
|||
|
Re: 中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
初級會員
|
Hi Beee ,
所以 若在程式裡有變更 "變數" 的值的程式碼, 這個變數 就不需加"volatile " 的宣告 我這樣的理解 是否正確??
發表於: 2020/9/8 9:58
|
|||
|
Re: 中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
初級會員
|
版主
看起來是因為 C compiler 在把程式最佳化時出現意外的結果 那在 C compiler 有無什麼設定, 可以不做這類的最佳化???
發表於: 2020/9/8 17:31
|
|||
|
Re: 中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
版主
|
Project Properties -> XC8 Global Options -> XC8 Compiler -> Option categories -> Optimizations
參照:
發表於: 2020/9/9 8:45
|
|||
|
Re: 中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
初級會員
|
Hi 版本
不做任何的 Optimizations 嗎? 即 Optimizations 選 0 嗎??
發表於: 2020/9/14 9:45
|
|||
|
Re: 中斷所使用的變數需加 volatile 的疑問
|
||||
---|---|---|---|---|
版主
|
參照:
是的。
發表於: 2020/9/14 10:06
|
|||
|