我正在尝试将字符串传递给函数。我已经阅读了很多关于 C18 中 RAM/ROM 字符串的内容,我的代码似乎还可以,但它不起作用。我的功能是这样的:
int setBluetoothName (static const rom char *name){
unsigned int n = 0, k = 0;
char string[27] = {0}; // ATNAME + 20 caracteres de nombre + EOF
char command[27] = {0};
_bit state = USART_INT;
// Deshabilito interrupciones del USART
USART_INT_DISABLE;
strcpypgm2ram(&string, &name);
// Numero de caracteres del nombre
for (; string[n] != 0x00 ; ++n);
if(n > 19) return LENGTH_ERROR; // si me pase de 20 letras es muy largo
// Configuro el nombre del Bluetooth
printf("ATNAME%s", &string);
我以这种方式使用它:
setBluetoothName("Brazo");
在 Proteus 中,我看到只有字母“B”被传递,当我将 ROM 字符串复制到 RAM 时,它简直是一团糟(见附图)。printf() 的输出只是 ATNAME,没有打印字符串。
我正在使用 C18 v4.40 和 MPLABX v1.41。非常感谢您的帮助。