1. 仿真器XDS无法连接电脑,设备管理器中有显示图标,但左边有一感叹号。
打开CCS3.3软件显示:Error initializing emulator
解决方法:卸载驱动,再更新,设置不在阻止此软件安装。如果感叹号消失,即安装成功。
2. 代码:
#define EMAC_BASE 0x01C80000
#define EMAC_RX0HDP *( volatile Uint32* )( EMAC_BASE + 0x620 )
volatile Uint32 *pReg;
pReg = &EMAC_RX0HDP;
for ( i = 0 ; i < 8 ; i++ )
*pReg++ = 0;
解释:
#define EMAC_BASE 0x01C80000这是申明的一个数,虽然代表一个起始地址,但还是一个数。EMAC_BASE + 0x620 就是一个数。( volatile Uint32* )( EMAC_BASE + 0x620 )这就是把这个数强制转换成一个32位地址,之所以用volatile,是因为这个地址里的数据会被外部改变,一般寄存器就是这样定义的,因为会有外围模块来改变它里面的值。
#define EMAC_RX0HDP *( volatile Uint32* )( EMAC_BASE + 0x620 ) 这就是取这个地址里的数了吧。
volatile Uint32 *pReg;定义的这个指针同样也是因为这个指针指向的数据会外部改变。那么pReg应当存放一个地址,EMAC_RX0HDP是取的一个内存里的数,所以要加取地址符号{相当于( volatile Uint32* )( EMAC_BASE + 0x620 )}。
for ( i = 0 ; i < 8 ; i++ )
{
*pReg = 0;pReg++;
} //就是将pReg以后的连续8个内存单元的数据清零了。
猜您喜欢
评论