首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arduino-uno怎么知道它只有一个串口?

arduino-uno怎么知道它只有一个串口?
EN

Stack Overflow用户
提问于 2019-04-03 02:00:05
回答 2查看 200关注 0票数 0

基本上,我正在尝试了解微控制器是如何工作的。至少从软件开发人员的角度来看是这样。我对"make-files“、编译和链接过程以及低级编程有一些基础知识。但我想学的是更接近硬件的编程。

所以我开始为Arduino剖析HardwareSerial代码(HardwareSerial.c和HardwareSerial.h)。我不明白的是UBRRH (或UBRR0H)是在哪里定义的,这意味着我们有serial0 (Arduino-Uno唯一的一个)。我的猜测是,电路板制造商需要以某种方式提供这一点。我认为,根据我使用的目标板,不同的代码会被编译。因此,如果我编译Arduino-Uno的代码,编译后的文件将以某种方式包含UBRRH等定义。那么Arduino IDE如何知道我正在编译什么板呢?

我的目标是最终能够编写我自己的串行协议。甚至可以设计我自己的冲浪板..尽管我创建的唯一“板”是一个H桥,但是,嘿,目标远大……

EN

回答 2

Stack Overflow用户

发布于 2019-04-03 18:30:17

Arduino IDE如何知道我正在编译哪块板?

您在菜单Tools -> Board中选择了它。

每个板上都存储了大量的信息。

Arduino\hardware\arduino\avr为例。

我的猜测是电路板的制造商需要以某种方式提供这一点。我认为,根据我使用的目标板,不同的代码会被编译。因此,如果我编译Arduino-Uno的代码,编译后的文件将以某种方式包含UBRRH等定义。

或多或少是这样的。看看这里,https://www.nongnu.org/avr-libc/user-manual/group__util__setbaud.html

https://www.nongnu.org/avr-libc/user-manual/index.html

票数 1
EN

Stack Overflow用户

发布于 2019-04-06 00:00:16

实际上,能够构建自己的兼容电路板是很常见的。在此基础上检查以下内容

根据这个问题(假设您引用了"UBRRH"),我猜您已经知道在Arduino UNO中存在什么控制器。

文件/hardware/arduino/avr/cores/arduino/HardwareSerial.h使用这些寄存器。

寄存器在库中声明,这些库被打包为Atmel公司提供的编译器工具链的一部分。

文件hardware/arduino/avr/boards.txt具有编译器的预处理器定义,这些定义是根据您在Arduino IDE的tools>board中选择的板来选择的。

现在,这些库根据它们从boards.txt文件中从Arduino IDE获得的build.mcu属性来查找正在编程的控制器的类型。

根据所选择的mcu,库定义或不定义代码编程MCU所需的寄存器(例如"UBRRH")。

我希望这能帮助你到达你想去的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55480955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档