jet 发表于 2005-8-4 22:33:09

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没有输出呢?

jet 发表于 2005-8-4 22:52:47

哦,原来是错的
应该用define UTXBUF0来定义0x3ffd00c地址里的只,而用定义变量的方法,只改变了变量的值,而这个变量分配了了新地址。

看错了,呵呵。
页: [1]
查看完整版本: skyeye中为什么不能这样写寄存器呢?(已解决)