1. Antecedentes
Para controlar el cristal líquido LCD1602, se deben ingresar caracteres en la matriz, por lo que se adopta la forma de sprintf, de la siguiente manera:
chardis0[16];
sprintf(dis0,"key_rt%d",key_rt);
LCD1602_ShowStr(0,0,dis0);
No hay ningún problema en la microcomputadora de un solo chip 51, pero en la microcomputadora de un solo chip stm32, se informará un error cuando se muestre y se atascará en el interior.
2. Análisis de la razón
2.1 Introducción a sprintf
La función srpintf() es muy poderosa: es más eficiente que algunas funciones de manipulación de cadenas ; y es más flexible; puede enviar el resultado deseado a la cadena especificada o como un búfer, mientras que printf solo puede enviar a la línea de comando~
Archivo de encabezado: stdio.h
Función función: formatea la cadena, escribe los datos formateados en la cadena.
Prototipo de función: int sprintf(char * buffer , const char *format, [argumento]...)
parámetro:
(1) búfer: un puntero de tipo char, que apunta al puntero de cadena escrito;
(2) formato: cadena de formato, es decir, el formato deseado en el programa;
(3) argumento: parámetro opcional, que puede ser cualquier tipo de dato;
Valor de retorno de la función: la longitud de la cadena a la que apunta el búfer;
utilidad:
(1) Formateo de cadenas digitales: en este sentido, sprintf e printf se usan de la misma manera, pero las posiciones que se imprimirán son diferentes. El primero imprime en la cadena de búfer y el último imprime en la salida estándar, por lo que sprintf puede también se puede usar para convertir todo el tipo se convierte en una cadena, que es más eficiente y simple que itoa~ Por ejemplo: sprintf(buffer, "%d", 123456); después de la ejecución, el búfer apunta a la cadena "123456"~
(2) Caracteres de conexión:
Sin embargo, solo los dos primeros parámetros de esta función son seguros y los últimos parámetros no lo son.
2.2 Soluciones
No hay una buena solución por el momento, y necesitamos profundizar en las razones detrás de esto para realizar una investigación de seguimiento.
La solución actual es usar memcpy en STM32 para empalmar.