文章目录

  • arduino - pinMode参数1的确定 - 以arduino nano every核心板为例
  • 概述
  • 笔记
  • pins_arduino.h
  • ABX00028-datasheet.pdf
  • 简单的辨认管脚号就照ABX00028-datasheet.pdf来
  • END

arduino - pinMode参数1的确定 - 以arduino nano every核心板为例

概述

arduino nano every的核心板使用的MCU为ATMega4809
在看一个工程(基于arduino nano every核心板), 在初始化代码中看到了很多 pinMode(x, x); e.g. pinMode(2, OUTPUT);
突然懵逼了… 到底是在初始化核心板哪个引出的引脚呢? 如果分不清操作的是哪个管脚, 就无法将工程实现和使用核心板的原理图一一对应.

假设要在核心板的数字IO上点亮一个灯, 或者用数字IO模拟串口发送一些数据(节省成本), 可能要初始化20个数字IO(就是模拟20个串口发送), 如果整错了, 都不知道操作的哪个引脚…
要先确定是核心板哪个引出管脚是哪个pin数字, 才可能正确初始化指定的pin数字为输出模式.

arduino库是经过封装的, 同一个函数(e.g. pinMode), 名称一样, 但是选不同核心板时, 是不同的实现(这就是封装).
而且基于arduino nano every的工程是不支持单步的. 所以想进基于arduino nano every的pinMode实现去看看, 这个参数1(管脚号码)是怎么使用的, 是不可能的.

即使使用能单步调试的arduino核心板(e.g. arduino zero)工程, 即使单步或转到pinMode的实现, 也是arduino zero的实现, 不是arduino nano every的实现.

看不到基于arduino nano every的工程库实现, 有点为难.

在arduinoIDE相关的目录中, 找到了 C:\Users\me\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.8\variants\nona4809\pins_arduino.h
再结合ABX00028-datasheet.pdf中的核心板引脚导出图, 这才明白.

笔记

pins_arduino.h

C:\Users\me\AppData\Local\Arduino15\packages\arduino\hardware\megaavr\1.8.8\variants\nona4809\pins_arduino.h

// On the Arduino board, digital pins are also used
// for the analog output (software PWM).  Analog input
// pins are a separate set.// ATMEGA4809 / ARDUINO
//
//                     (SCL)(SDA) (7)  (2)                 (R)  (3~) (6~)
//                 PA4  PA3  PA2  PA1  PA0  GND  VDD  UPDI PF6  PF5  PF4  PF3
//
//                  48   47   46   45   44   43   42   41   40   39   38   37
//              + ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ +
//        PA5   1|                                                             |36  PF2
//        PA6   2|                                                             |35  PF1 (TOSC2)
//        PA7   3|                                                             |34  PF0 (TOSC1)
//   (9~) PB0   4|                                                             |33  PE3 (8)
//  (10~) PB1   5|                                                             |32  PE2 (13)
//   (5~) PB2   6|                                                             |31  PE1 (12)
//        PB3   7|                          48pin QFN                          |30  PE0 (11~)
//   (Tx) PB4   8|                                                             |29  GND
//   (Rx) PB5   9|                                                             |28  AVDD
//        PC0  10|                                                             |27  PD7 (VREF)
//        PC1  11|                                                             |26  PD6
//        PC2  12|                                                             |25  PD5 (A5)
//               + ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ +
//                  13   14   15   16   17   18   19   20   21   22   23   24
//
//                  PC3  VDD  GND  PC4  PC5  PC6  PC7  PD0  PD1  PD2  PD3  PD4
//                                 (1)  (0)  (4)       (A0) (A1) (A2) (A3) (A4)//const uint8_t digital_pin_to_port[] = {PC, // 0 PC5/USART1_RxPC, // 1 PC4/USART1_TxPA, // 2 PA0PF, // 3 PF5PC, // 4 PC6PB, // 5 PB2PF, // 6 PF4PA, // 7 PA1PE, // 8 PE3PB, // 9 PB0PB, // 10 PB1PE, // 11 PE0PE, // 12 PE1PE, // 13 PE2PD, // 14 PD3/AI3PD, // 15 PD2/AI2PD, // 16 PD1/AI1PD, // 17 PD0/AI0PF, // 18 PF2/AI12PF, // 19 PF3/AI13PD, // 20 PD4/AI4PD, // 21 PD5/AI5PA, // 22 PA2/TWI_SDAPA, // 23 PA3/TWI_SCLPB, // 24 PB5/USART3_RxPB, // 25 PB4/USART3_Tx
};

上面的摘录, 可以看出从MCU侧, 看到的引脚号码. 但是这个要和核心板引出的管脚对应的话, 就需要看数据表. 因为我们要操作的数字IO, 是核心板引出的管脚, 如果只看MCU侧, 看不明白.

ABX00028-datasheet.pdf


红色的Dx和~Dx, 就是数字IO(只能赋值为0和1的引脚),
D2就说明数字IO编号为2, 对照 pins_arduino.h 如下

~D9就说明数字IO为9, 对照 pins_arduino.h 如下

简单的辨认管脚号就照ABX00028-datasheet.pdf来

如果要操作核心板引出的哪根数字IO, 就可以对照ABX00028-datasheet.pdf中的6 Connector Pinouts中带的核心板引脚导出图中的Dx, ~Dx带的数字来确认pinMode的参数1该填哪个数字.

假设核心板D2引脚要初始化为输出, 引脚号就是2, 就调用 pinMode(2, OUTPUT);

假设核心板~D10引脚要初始化为输出, 引脚号就是10, 就调用 pinMode(10, OUTPUT);

END

arduino - pinMode参数1的确定 - 以arduino nano every核心板为例相关推荐

  1. Arduino基础篇(一)-- 打开Arduino的大门

    文章目录 1 什么是Arduino 2 为什么选择Arduino作为开发平台 3 Arduino硬件 3.1 Arduino开发板的类型 3.2 不同开发板的对比 4 Arduino软件 4.1 ID ...

  2. python和arduino哪个好_基于Python和Arduino的智能花盆系统

    基于 Python 和 Arduino 的智能花盆系统 杨吉云 YANG Ji-yun :徐乾淏 XU Qian-hao :沈莲 SHEN Lian :章晓敏 ZHANG Xiao-min [摘 要] ...

  3. arduino智能浇花系统_基于Arduino单片机的智能浇花器

    Internal Combustion Engine & Parts • 119 • 基于Arduino单片机的智能淺花器 卞 云 松 ;张 国 祥 ;任 佳 豪 :陆晨雨 (江海职业技术学院 ...

  4. arduino与hcsr04_超声波传感器HC-SR04和Arduino进行距离计算

    在本教程中,将使用Ultra Sonic HC-SR04和Arduino(Arduino UNO)构建物联网项目,以计算Ultra Sonic HC-SR04设备与物体之间的距离.在这个项目中,我们将 ...

  5. arduino 土壤温湿度传感器_怎样将Arduino与土壤湿度传感器FC-28连接起来

    步骤1:在模拟模式下连接传感器 模拟模式 - 连接土壤湿度传感器和Arduino 要在模拟模式下连接传感器,我们需要使用传感器的模拟输出.从土壤湿度传感器FC-28获取模拟输出时,传感器给出的值为0- ...

  6. arduino下载库出错_【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用...

    微信关注 "DLGG创客DIY"设为"星标",重磅干货,第一时间送达. arduino特点库超多,想必大家都领教了,今天来分享一下之前玩过的TRMpcm库. 这 ...

  7. 《Arduino实战》——第1章 你好Arduino

    本节书摘来异步社区<Arduino实战>一书中的第1章,作者:[美]Martin Evans ,Joshua Noble ,Jordan Hochenbaum,更多章节内容可以访问云栖社区 ...

  8. 【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. arduino特点库超多,想必大家都领教了,今天来分享一下之前玩过的TRMpcm库. ...

  9. Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法

    Arduino开发(二)_基于Arduino UNO开发板的RGB灯光控制方法 首先,我们来看一下Arduino UNO开发板的具体引脚排列,如下图所示, 再了解一下三色RGB LED模块,如下图所示 ...

最新文章

  1. DSP unresolved symbol问题的解决
  2. 线性代数 第三章 矩阵的初等变换与线性方程组
  3. 算术表达式字符串求值
  4. [2017.3.23]Miller-Rabin
  5. outlook两个账号怎么分开存储邮件
  6. 推荐--jQuery使用手册
  7. MFCC/Filter Bank的提取流程
  8. 机器学习中的两个概率模型
  9. excel2003和excel2007文件的创建和读取
  10. 2021 年“认证杯”数学中国数学建模网络挑战赛 B题
  11. 144.绘制布朗运动曲线
  12. 公关广告策略分析:如何结合广告的推力和公关的拉力
  13. 数据可视化技术有什么特点
  14. 2015年动漫电影观影指南值得收藏
  15. 共线条件方程及其应用
  16. itools android玩游戏,itools安卓模拟器电脑版
  17. element-plus 更换主题色
  18. 是非人生——一个菜鸟程序员的5年人生路
  19. Linux---Apache网页优化---网页压缩
  20. 字符串到字节数组和字节数组到字符串的转换(编码和解码问题)

热门文章

  1. ActivePerl从源码安装模块
  2. 【软考-中级】系统集成项目管理工程师-计算题
  3. Hindawi旗下某杂志的投稿状态记录 一波三折
  4. oca认证_OCA第2部分中的Java难题
  5. 如何书写UserCase
  6. html支付选择银行卡,JQ电脑手机通用银行选择下拉框 提现银行卡绑定
  7. 利用word邮件合并批量导入照片
  8. Word使用心得:邮件合并
  9. Rimini Street宣布2020年第一季度财务业绩
  10. SSCOM串口调试助手自定义波特率