Microchip
直播中

韦薇

8年用户 223经验值
私信 关注
[问答]

如何确保在代码从ISR循环返回之后在内存中设置的变量不会丢失?

您好,我使用web按钮来设置customHTTPApp.c中的变量值,这里如果用户单击按钮“mode”被设置为“1”回到main.c,进入.(1)循环i测试模式值,以执行以下操作:如果模式被设置为“1”,并且中断ISR发出的另一个变量也被设置为“1”M这里发生了y问题,当用户单击web按钮时,“mode”的确被设置为“1”值,但是当我在主循环中测试它时,它看起来在预期的中断发生时值已经改变了。d在customHTTPApp.c中将其定义为ext.。如果我反过来定义模式变量:在customHTTPApp.c中首先设置它,并将其定义为extern inmain.c,那么当用户单击web按钮时,代码就会被卡住。有人能解释一下这种情况吗?为了实现我的项目目的,我必须共享customHTTPApp.c和main.c中的许多变量。如何确保在代码从ISR循环返回之后在内存中设置的变量不会丢失?CuthHTTPAPP.CMAN.C/[代码]

回帖(8)

黄飞高

2019-7-31 11:26:06
我想你的意思是“mode”而不是“main”作为变量名。“inter._flag_.ed”应该设置为volatile(我也会使它成为bool),因为它由主代码和中断代码一起修改。你想。我怀疑你做了别的错事。也许在ISR中,模式重置到哪里?Ruben
举报

王焕树

2019-7-31 12:09:06
如果变量在ISR内部被修改,并且由ISR外部的代码读取,那么它必须被声明为“volatile”,以告诉编译器它随时可能改变。
举报

王健

2019-7-31 12:35:20
我遇到了同样的问题:'mode'是由customHTTP.c的webbutton设置的(取值0或1),但当我从main.c'inter._flag_.ed'进行测试时,它的值发生了变化。
举报

王健

2019-7-31 12:56:19
好的,我修改如下,但仍然没有变化。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分