【问题标题】:Sending data via SPI / Atmega 8通过 SPI / Atmega 8 发送数据
【发布时间】:2014-06-03 14:22:12
【问题描述】:

我对 AVR (atmega 8) 中的 SPI 有一些疑问。 我想传输字节 0xfe , 但函数看起来像这样:

void sendDataSpi(char data )

这是否意味着我必须将我的 intiger(十六进制值)转换为 char 然后发送 或者我可以像下面这样直接发送十六进制:

 sendDataSpi(0xfe);

它应该有效吗? 提前感谢您的帮助。

【问题讨论】:

    标签: c avr atmega


    【解决方案1】:

    您正在混淆值的表示和身份。

    因此,如果您发送0xFE,则不会发送十六进制。

    0xFE-2254 的转换发生在编译器中。就我们在​​此处看到的而言,它们是相同的(取决于您的平台上的 char 是签名还是未签名)。

    所以是的,当然,它会按照你的方式工作。

    【讨论】:

    • 尽管如此,void sendDataSpi(char data ) 还是一个糟糕的 API。因为应该传输数据(原始字节),所以数据类型也应该反映这一点。接口应该是void sendDataSpi(uint8_t data)char 用于字符数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2018-11-10
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多