c——rust中__IO的等价是什么?


  • 从这里给出的例子:__IO &静态关键字C?,我正在努力将一些使用微控制器的C文件转换为rust

  • 我想知道rust中这个volatile类型的等价

  • 我知道rust中的不安全代码:是__IO替代的一个例子吗?

  • 我使用的是STM32f4XX型HAL

所有I/O限定符宏都在core_cm4.h中定义(通常通过stm324xx.h间接包含),因此:

#ifdef __cplusplus
#define   __I     volatile             /*!< Defines 'read only' permissions */
#else
#define   __I     volatile const       /*!< Defines 'read only' permissions */
#endif
#define     __O     volatile             /*!< Defines 'write only' permissions */
#define     __IO    volatile             /*!< Defines 'read / write' permissions */

正如你所看到的,它们只是标准C限定符的别名,而不是C关键字本身,甚至不是编译器扩展——它们是CMSIS的一部分。

我不是Rust专家,但在Rust中似乎没有直接的等价,因为您不能简单地限定变量以确保所有访问都是显式的,因此内存映射I/O使用不同的方法。有一个mmio板条箱和read_volatile/write_volatile,还有一个Volatile包装器,所有这些都可能与这个问题有关。

最新更新