Estoy trabajando en el diseño de un cargador de arranque para un controlador kinetis. Estoy utilizando esta aplicación de Terminal ( enlace ). Puedo enviar mensajes de texto como "Hola mundo" a través de mi puerto serie, al depurar el código utilizando el depurador de enlaces J de Segger en mi tablero.
Perocuandointentoenviarelarchivodelaaplicacióndespuésdeprogramarlaplacaconmicódigodelcargadordearranque,elterminalnoresponde.
¿SedebeaquemiConexiónenserieessemidúplex(RS485)oporquehayalgúnerrorenmicódigo?
Nosésilaconexiónhalf-duplexseríaunarazón.Queríasabersiesoseríaunarazón.Simipreguntatesuenatonta,porfavorexplícamelalógica.
Graciasporayudar
Actualizar:
Estecódigoproporcionalasalidacorrectamentecomosemuestraenlaimagen.
for(;;){GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR,GPIO_PDD_PIN_21);CLS1_SendStr("Hello World!\r\n", CLS1_GetStdio()->stdOut);
WAIT1_Waitms(1000);
CLS1_SendStr("Welcome Ganesh!\r\n", CLS1_GetStdio()->stdOut);
}
Pero este código
'static Void ReadText (void) { uint8_t buffer [32], ch, i;
for(;;) {
GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR, GPIO_PDD_PIN_21);
CLS1_SendStr("Enter some text: ", CLS1_GetStdio()->stdOut);
GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR, GPIO_PDD_PIN_21);
buffer[0] = ' for(;;) {
GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR, GPIO_PDD_PIN_21);
CLS1_SendStr("Enter some text: ", CLS1_GetStdio()->stdOut);
GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR, GPIO_PDD_PIN_21);
buffer[0] = '%pre%';
i = 0;
do {
if (CLS1_KeyPressed()) {
CLS1_ReadChar(&ch); /* read the character */
if (ch!='%pre%') { /* received a character */
buffer[i++] = ch; /* store in buffer */
if (i>=sizeof(buffer)) { /* reached end of buffer? */
buffer[i] = '%pre%'; /* terminate string */
break; /* leave loop */
}
if (ch=='\n') { /* line end? */
buffer[i] = '%pre%'; /* terminate string */
break; /* leave loop */
}
}
}
} while(1);
GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR, GPIO_PDD_PIN_21);
CLS1_SendStr("You entered: ", CLS1_GetStdio()->stdOut);
CLS1_SendStr(buffer, CLS1_GetStdio()->stdOut);
CLS1_SendStr("\r\n", CLS1_GetStdio()->stdOut);
}
}'
';
i = 0;
do {
if (CLS1_KeyPressed()) {
CLS1_ReadChar(&ch); /* read the character */
if (ch!='%pre%') { /* received a character */
buffer[i++] = ch; /* store in buffer */
if (i>=sizeof(buffer)) { /* reached end of buffer? */
buffer[i] = '%pre%'; /* terminate string */
break; /* leave loop */
}
if (ch=='\n') { /* line end? */
buffer[i] = '%pre%'; /* terminate string */
break; /* leave loop */
}
}
}
} while(1);
GPIO_PDD_TogglePortDataOutputMask(GPIOA_BASE_PTR, GPIO_PDD_PIN_21);
CLS1_SendStr("You entered: ", CLS1_GetStdio()->stdOut);
CLS1_SendStr(buffer, CLS1_GetStdio()->stdOut);
CLS1_SendStr("\r\n", CLS1_GetStdio()->stdOut);
}
}'
Se depura en la placa sin ningún error, pero en la aplicación del terminal no hay cambios. %código% Este fragmento de código habilita y deshabilita el transmisor mientras se envía y recibe, respectivamente. ¿Estoy cometiendo algún error en el uso de este código?