我正在尝试编写一个程序来检测使用AVR-GCC编译的Teensy微控制器上位图的像素级碰撞。我试图找出如何计算屏幕上的位图的单个字节的位置,并告诉我应该使用指针。我没有看到位图字节的物理地址与它在屏幕上的位置之间的关系,但我想调查一下。问题是,我无法打印这个地址。 AVR没有printf,我也不知道如何让它在屏幕上显示。有没有人有办法在终端以某种方式产生这个地址?
即。如果我有一个位图并想要打印出第一个字节的地址,我需要写什么才能完成这个:
??? *bit = &car_bitmap[1];
???("%??? ", bit);
答案 0 :(得分:1)
使用snprintf并将字符串发送到终端。它在AVR uC上非常昂贵。如果您使用gcc地址空间扩展,则可能必须链接长号的支持。
答案 1 :(得分:1)
假设你有一个工作printf()
,这应该有效:
void * const bit = &car_bitmap[1];
printf("%p\n", bit);
%p
是如何打印void *
的地方。其他指针类型应该转换为void *
以便匹配,但无论如何我使用void *
将地址放入帧缓冲区。