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