这是我的代码。我现在无法测试它,所以我只是想知道是否有人可以验证这将使用完整的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()
时就会按照我的方式调用它。
更新:我昨天能够测试它,这确实有效!感谢您的帮助!
答案 0 :(得分:1)
虽然我没有亲自将其加载到MCU上并对其进行测试,但是,只要TXIF
看起来像它就会看起来很好。
你真的应该使用snprintf
或更大的缓冲区。这是溢出整数的一种情况(如简单地具有太大的值或任何负值)将级联到缓冲区溢出。
答案 1 :(得分: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,
你做对了。