0

我们将 Atmel 的 ASF (3.48) 与 Studio 7(在 ATSAM4E 系列 MCU 上)和 arm-gnu-toolchain 9-2020-q2-update 一起使用。该团队最近决定使用 C++ 编写更多更高的接口层,同时仍然使用 C 中的 CMSIS 和 ASF 驱动程序。考虑到这一点,我试图在我的接口文件中替换以下内容:

#define MY_DEBUG_UART UART0

constexpr Uart *MY_DEBUG_UART = UART0;

现在,UART0在相关的 CMSIS/SAM4E 文件中定义为

#define UART0 ((Uart *)0x400E0600U) /**< \brief (UART0 ) Base Address */

因此,在构建时,此 UART0 #define 会返回错误。

错误 reinterpret_cast 从整数到指针

我明白为什么了。但是我看到的例子似乎涉及设置一个寄存器类。我不想复制东西,想使用提供的驱动程序,具有#defines 的可读性而没有伴随的问题,并利用 C++ 的优势。请问最干净的方法是什么?

4

0 回答 0