0

这是我拥有的代码。我现在无法测试它,所以我只是想知道是否有人可以验证这将采用完整的str字符串并将每个字符单独发送到TXREG

char str [10];
int n;
n = sprintf(str, "%u%% %u\n", Duty_Cycle, DAC_Output);
transmit_uart(str);                    // Send the value

这是transmit_uart()方法。

void transmit_uart(const char *value) {
    for(int i = 0; value[i] != '\0'; i++) {
        while(TXIF == 0) {}
        TXREG = value[i];
    }
}

所以这应该发送类似

50% 128

每次我transmit_uart()用我在那里的方式格式化的字符串调用。

更新:我昨天能够测试它,这确实有效!感谢所有的帮助!

4

2 回答 2

1

虽然我没有亲自将它加载到 MCU 上并对其进行测试,但是,是的,只要TXIF它看起来像它,它看起来就很好。

你真的应该使用snprintf或更大的缓冲区。这是整数溢出(如简单地具有太大的值或任何负值)将级联成缓冲区溢出的一种情况。

于 2012-12-04T04:40:04.317 回答
1

如果要发送 5-9 个字符的字符串:

1 or 2 or 3 symbols - Duty_Cycle value,
1 symbol - % symbol,
1 symbol - space,
1 or 2 or 3 symbols - DAC_Output value,
1 symbol - \n symbol,

你做得对。

于 2012-12-04T04:40:27.750 回答