
一直有个疑问:加入我使用的是前后台的程序框架。在主循环当中有一个全局变量在变化,更新。假设这个变量是一个输入的IO口,在主循环当中不断的读取IO口最新的数值比如Inputdata = IO1;这一句语句是在主循环当中读取的。那再什么地方使用呢?比如这个全局变量是在中断当中使用的。 以下是示例程序 main() { while(1) { inputdata = IO1; } } interrupt () { if(inputdata == 0) { do s输入牛逼 } else { do 输入不牛逼 } } |
回复:stm32 原子操作问题
这样先分析 inputdata = IO1;这个语句
变成汇编
1.IO1放在辅助寄存器R1当中
2.将inputdata的地址放入辅助寄存器r2
3.将R1的内容给R2
如果是这样的话,降入在执行第2步的时候来了一个中断。
这个时候,第2步骤会执行完毕后,跳到中断去执行呢。
还是第2步骤执行一半后,不执行完成就跳到中断去
不知道各位在stm32里面有没有特别的资料可以说明这个问题。
谢昂大侠能够提供一些数据和资料帮我解答一下。
关于这个原子操作。
谢谢
RE:stm32 原子操作问题
回复:stm32 原子操作问题
补充:问题
这样先分析 inputdata = IO1;这个语句
变成汇编
1.IO1放在辅助寄存器R1当中
2.将inputdata的地址放入辅助寄存器r2
3.将R1的内容给R2
如果是这样的话,降入在执行第2步的时候来了一个中断。
这个时候,第2步骤会执行完毕后,跳到中断去执行呢。
还是第2步骤执行一半后,不执行完成就跳到中断去
不知道各位在stm32里面有没有特别的资料可以说明这个问题。
谢昂大侠能够提供一些数据和资料帮我解答一下。
关于这个原子操作。
谢谢
将inputdata的变量类型定义为原子类型,就会将3部执行完才会去执行中断,定义为原子操作后inputdata的赋值不会被打断
RE:stm32 原子操作问题
怎么定义为原子类型?c语言有这种说法么
原子类型 我的理解是一种说法吧 C语言里没有定义 一般操作系统里有这种概念