Как найти адрес переменной при использовании AVR? - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь написать программу, которая обнаруживает столкновение битовых карт на уровне пикселей на микроконтроллере Teensy, компилируемом с AVR-GCC.Я пытаюсь понять, как рассчитать положение одного байта растрового изображения на экране, и мне сказали, что я должен использовать указатели.Я не вижу связи между физическим адресом байта растрового изображения и его положением на экране, но я хотел бы исследовать.Проблема в том, что я не могу напечатать этот адрес.У AVR нет printf, и я не знаю, как заставить его отображаться на экране.У кого-нибудь есть способ как-то сгенерировать этот адрес в терминале?

т.е. если у меня есть битмап и я хочу распечатать адрес первого байта, что мне нужно написать, чтобы завершить это:

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

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Если у вас есть рабочий printf(), это должно работать:

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

Где %p - это способ печати void *.Другие типы указателей должны быть приведены к void * для соответствия, но я все равно использовал void * для адреса в кадровом буфере.

0 голосов
/ 22 мая 2018

Используйте snprintf и отправьте строку в терминал.Это очень дорого на AVR UC.Если вы используете расширения адресных пространств gcc, возможно, вам придется связать поддержку длинных номеров.

...