skyeye中为什么不能这样写寄存器呢?(已解决)
看了helloworld for skyeye,以4510为例,uart0 txbuf地址是0x3ffd00c那么有:
void hello(void)
{
int i;
char * hellostr="helloworld";
char* paddr=(char*)0x3ffd00c;
for(i=0;i<10;i++)
{
* paddr=hellostr;
}
return;
}
这样是可行的,看到skyeye里不断显示出helloworld
而改成:
void hello(void)
{
int i;
char * hellostr="helloworld";
char UTXBUF0 = (*(char volatile*)(0x3ffd00c));
for(i=0;i<10;i++)
{
UTXBUF0=hellostr;
}
return;
}
这样写的话,不是和上面一样的么?为什么skyeye没有输出呢? 哦,原来是错的
应该用define UTXBUF0来定义0x3ffd00c地址里的只,而用定义变量的方法,只改变了变量的值,而这个变量分配了了新地址。
看错了,呵呵。
页:
[1]