使用AVR时如何查找变量的地址?

时间:2018-05-22 09:37:35

标签: c avr avr-gcc teensy winavr

我正在尝试编写一个程序来检测使用AVR-GCC编译的Teensy微控制器上位图的像素级碰撞。我试图找出如何计算屏幕上的位图的单个字节的位置,并告诉我应该使用指针。我没有看到位图字节的物理地址与它在屏幕上的位置之间的关系,但我想调查一下。问题是,我无法打印这个地址。 AVR没有printf,我也不知道如何让它在屏幕上显示。有没有人有办法在终端以某种方式产生这个地址?

即。如果我有一个位图并想要打印出第一个字节的地址,我需要写什么才能完成这个:

??? *bit = &car_bitmap[1]; 
???("%??? ", bit);

2 个答案:

答案 0 :(得分:1)

使用snprintf并将字符串发送到终端。它在AVR uC上非常昂贵。如果您使用gcc地址空间扩展,则可能必须链接长号的支持。

答案 1 :(得分:1)

假设你有一个工作printf(),这应该有效:

void * const bit = &car_bitmap[1]; 
printf("%p\n", bit);

%p是如何打印void *的地方。其他指针类型应该转换为void *以便匹配,但无论如何我使用void *将地址放入帧缓冲区。