首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绕过Arduino中的串口库

如何绕过Arduino中的串口库
EN

Stack Overflow用户
提问于 2016-09-02 18:39:40
回答 1查看 865关注 0票数 0

我想编写自己的代码来管理一个Arduino串口(9位串行),所以我需要绕过Serial1 TX的预编程arduino ISR矢量。我可以通过修改HardwareSerial1.cpp来实现这一点,但我不喜欢这样一个事实:我的代码变得不可移植,并且可能成为库更新的牺牲品。

你知道如何编程一个不同的ISR向量而不干扰库代码吗?我在我自己的代码中尝试了这一点,但没有结果:

代码语言:javascript
运行
复制
//bypass arduino library for serial 1 and use this ISR instead
ISR(UART1_UDRE_vect) 
{ 
    9bitSerial.interrupt(); 
} 

报告了以下错误,这似乎证实了该方法不起作用:

ISR.cpp:11:25:错误:在宏“UART1_UDRE_vect”的数值常数ISR.cpp:in展开之前期望的非限定-id

有什么线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-02 21:05:50

最安全的方法是将整个HardwareSerial类复制到一个不同名称的类中。然后继续做你的修改。这正是我对NeoHWSerialNeoICSerial所做的:它们是从HardwareSerialAltSoftSerial复制和重命名的。

但是,Serialx (HardwareSerial实例)在构建中的所有使用都必须替换为类的实例。您将无法将HardwareSerial实例与类混合(重复的ISR错误)。但如果你的课只增加行为,那就没什么大不了的了。不使用9位的其他实例不应受到影响。如果您不介意的话,我想将这些更改折叠到NeoHWSerial中。我偶尔也会看到NeoSWSerial的9位系列。

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

https://stackoverflow.com/questions/39298844

复制
相关文章

相似问题

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