Я пишу прошивку для PIC32MX, используя HiTech PICC32. Одна из проблем, которую я хочу избежать, заключается в том, что, поскольку большинство контактов имеют несколько имен (например, AN0 = RB0 = CN2 = PGED1), я или кто-то другой может случайно использовать RB0, не осознавая, что AN0 уже используется. (На самом деле это может иметь катастрофические последствия, поскольку неправильная настройка аналогового/цифрового контакта может привести к чрезмерному потреблению тока и выделению необходимого дыма.)
Помимо подробного документирования каждого используемого контакта, мне было интересно, есть ли быстрый способ решить эту проблему на уровне кодирования. Мне нужен макрос, который люди (в основном я сам) могут использовать, скажем, CLAIM_PIN(58), который будет выдавать предупреждение или ошибку, если он будет запущен дважды.
(Я не хочу этого любой ценой, если единственное возможное решение слишком ужасно или неприемлемо, тогда я забуду об этом и просто создам репутацию человека, который расплакался, поджег себя или что-то в этом роде. Я также видел этот вопрос о макросах, создающих макросы, что исключает это.)
Я должен уточнить: код написан в нескольких единицах компиляции (по крайней мере, я думаю, что это означает фразу). У меня есть файл .h/.c для моего кода A2D, аналогично для SPI и аналогично для различных периферийных устройств, которые просто используют определенные порты ввода-вывода. Пространство не на самом деле проблема, мой код оставляет много места на PIC32MX; также я могу использовать другой флаг __DEBUG, чтобы удалить код проверки контактов для окончательного использования.