加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

宏指示使用的I / O引脚

发布时间:2020-12-16 05:28:59 所属栏目:百科 来源:网络整理
导读:我正在使用HiTech PICC32为PIC32MX编??写固件.我想避免的一个问题是,由于大多数引脚有多个名称(例如AN0 = RB0?? = CN2 = PGED1),我或其他人可能会意外使用RB0,而不意识到AN0已被使用. (这实际上可能是灾难性的,因为错误地配置模拟/数字引脚可能导致过度的电
我正在使用HiTech PICC32为PIC32MX编??写固件.我想避免的一个问题是,由于大多数引脚有多个名称(例如AN0 = RB0?? = CN2 = PGED1),我或其他人可能会意外使用RB0,而不意识到AN0已被使用. (这实际上可能是灾难性的,因为错误地配置模拟/数字引脚可能导致过度的电流消耗和释放必需的烟雾.)

除了全面记录使用的每个引脚,我想知道是否有一个快速的方法来解决这个问题在编码水平.我想要一个人(主要是我自己)可以使用的宏,说CLAIM_PIN(58),如果运行两次,它将发出警告或错误.

(我不想不惜任何代价,如果唯一可能的解决方案太可怕或不可维护,那么我会忘记它,只是为了爆裂的泪水或让自己陷入火焰或某事,我也看到这个问题约macro producing macros,这排除了.)

我应该澄清:代码是用多个编译单元写的(至少我认为这是短语的意思).我的A2D代码有一个.h / .c文件,类似于SPI,对于只使用某些I / O端口的各种外设也是如此.空间不是一个问题,我的代码在PIC32MX上留下了足够的空间;也可以使用另一个__DEBUG标志去除最终使用的引脚检查代码.

解决方法

好的,这里没有运行时费用.
#define CLAIM(n) struct busy##n {}

CLAIM(58);
CLAIM(58);

如果运行两次,则会出错:

z.c:4: error: redefinition of ‘struct busy58’

要将检查扩展到多个编译单元,您将要将宏包装在#if DEBUG中,因为我们将使用链接器来检测冲突,因此将具有运行时占位.

#define CLAIM(n) char busy##n = 1;
#define CLAIM(n) void busy##n() {} // bdonlan

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读