淘先锋技术网

首页 1 2 3 4 5 6 7

DSP将寄存器变量都映射到相应的寄存器地址,因此经常会见到这样声明的语句:

 

volatile   struct  EPWM_REGS  * ePWM[PWM_CH]  =
             {  
& EPwm1Regs,  & EPwm1Regs,  & EPwm2Regs,  & EPwm3Regs,  & EPwm4Regs};

 

 

那么,为什么需要volatile 这个关键字呢?

 

该单词的意思是可变的,易变的。在DSP中,一些寄存器的值的变化有两种情况:(1)硬件上导致的变化,例如中断、ADC等;(2)软件上的变化,例如对某个变量赋值等。

当加入了关键字volatile,则表示该变量的值可因上述两种情况而发生变化;即,对软件来说,硬件上变化的值是不可预知的,加入了该关键字,提示编译器每次读取该变量时,都要直接读取该变量地址中的寄存器!

转载于:https://www.cnblogs.com/oneseven/archive/2010/03/21/1691220.html