ias11023 发表于 2018-4-19 15:14:57

變數在中斷跳轉後數值被改變....

本帖最后由 ias11023 于 2018-4-19 15:21 编辑

最近發現程式在中斷之間跳轉時原本在TIM5_CC內被設為1的變數回到SysTick_100us內該變數又回到零了....且確認過該變數的部分只在這兩個地方有被使用到過,那相關程式部分編寫在下面,想請教版上是否有人有發生過同樣問題,又是怎解決的
該專案使用了三個中斷設定(如下),分別為TIM1_CH4_CC, TIM5_CH4_CC, SysTick_100us_Isr,其設定如下圖      且專案內宣告了一個全域變數(_SysFlag)      那目前在程式設定為當TIM5_CH4_CC中斷觸發後會將SysFlag.PerUitlity= 1(該bit宣告在上面數往下數第二個),      而進到100us_Isr內後會將該Flag清除      <Set Flag>      <Clear Flag>


      那程式在運行過程中有時會發生明明有進入到TIM5_CC中斷內,但是等從TIM5中斷內出來後回到100us內發生SysFlag.PerUtility並沒有被設立為一的狀況發生,



Cortexxx 发表于 2018-4-21 22:36:25

喔~ 优先级问题~

song19881218 发表于 2018-4-22 12:55:04

可能是栈溢出,栈设大一点试试

ias11023 发表于 2018-4-23 11:38:01

本帖最后由 ias11023 于 2018-4-23 11:39 编辑

原本棧設定為0x800,有試過將其改為0x1000也還是一樣:L

ias11023 发表于 2018-4-23 11:39:07

Cortexxx 发表于 2018-4-21 22:36
喔~ 优先级问题~

請問Cortexxx大說的優先級問題是指什麼意思??
是有哪邊設定有問題嗎?

smallcsduck 发表于 2018-4-23 15:43:22

volatile 这个了解一下
页: [1]
查看完整版本: 變數在中斷跳轉後數值被改變....