QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1206|回复: 1

skyeye中为什么不能这样写寄存器呢?(已解决)

[复制链接]
发表于 2005-8-4 22:33:09 | 显示全部楼层 |阅读模式
看了helloworld for skyeye,以4510为例,uart0 txbuf地址是0x3ffd00c
那么有:

  1. void hello(void)
  2. {
  3.         int i;
  4.         char * hellostr="helloworld";
  5.         char* paddr=(char*)0x3ffd00c;
  6.       
  7.         for(i=0;i<10;i++)
  8.         {
  9.               * paddr=hellostr[i];
  10.                   
  11.         }
  12.         return;
  13. }
复制代码


这样是可行的,看到skyeye里不断显示出helloworld

而改成:

  1. void hello(void)
  2. {
  3.         int i;
  4.         char * hellostr="helloworld";

  5.         char UTXBUF0 = (*(char volatile*)(0x3ffd00c));
  6.         
  7.         for(i=0;i<10;i++)
  8.         {
  9.                   
  10.                   UTXBUF0=hellostr[i];
  11.         }
  12.         return;
  13. }
复制代码

这样写的话,不是和上面一样的么?为什么skyeye没有输出呢?
 楼主| 发表于 2005-8-4 22:52:47 | 显示全部楼层
哦,原来是错的
应该用define UTXBUF0来定义0x3ffd00c地址里的只,而用定义变量的方法,只改变了变量的值,而这个变量分配了了新地址。

看错了,呵呵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-23 10:52 , Processed in 0.035099 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表