저는 MPLAB X Harmony 프레임 워크와 마이크로 컨트롤러 작업에 익숙하지 않습니다. 나는 PIC32MZ2048ECH144에서 일하고있다. USART를 사용하여 간단한 문자열을 전송하고 RealTerm 터미널에 표시된 것을 봅니다. (하이퍼 터미널도 시도했습니다.) 어떤 문자열을 보내더라도 정크 문자 만 표시됩니다. 정크 문자가 표시되는 문제에 대한 해결책을 찾았을 때 전송 속도를 확인할 수있는 제안이있었습니다. MPLab Harmony Configurator (옵션 -> 하모니 프레임 워크 구성 -> 드라이버 -> USART -> USART 드라이버 인스턴스 0 -> 전송 속도 -> 9600)에서 전송 속도를 9600으로 설정했습니다. 그래서 나는 명시 적으로 보 레이트를 설정하기 위해 app.c에서 다음 라인을 사용했다. (PBCLK는 100MHz 임). 그러나 운이 없다! PLIB_USART_BaudRateSet (USART_ID_2, 100000000, 9600); APP.C 파일 코드 :PIC32MZ2048ECH144 USART- 정크 문자가 전송되었습니다.
/*******************************************************************************
Start of File
*/
const char *string1 = "*** UART Interrupt-driven Application Example ***\r\n";
const char *string2 = "*** Type some characters and observe the LED turn ON ***\r\n";
APP_DATA appData =
{
};
APP_DRV_OBJECTS appDrvObject;
void APP_Initialize (void)
{
appData.state = USART_ENABLE;
appData.InterruptFlag = false;
}
bool WriteString(void)
{
if(*appData.stringPointer == '\0')
{
return true;
}
while (PLIB_USART_TransmitterIsEmpty(USART_ID_1))
{
PLIB_USART_TransmitterByteSend(USART_ID_1, *appData.stringPointer);
appData.stringPointer++;
if(*appData.stringPointer == '\0')
{
return true;
}
}
return false;
}
bool PutCharacter(const char character)
{
if(PLIB_USART_TransmitterIsEmpty(USART_ID_1))
{
PLIB_USART_TransmitterByteSend(USART_ID_1, character);
return true;
}
else
return false;
}
void APP_Tasks (void)
{
/* check the application state*/
switch (appData.state)
{
case USART_ENABLE:
/* Enable the UART module*/
PLIB_USART_BaudRateSet(USART_ID_1, 100000000 ,9600);
PLIB_USART_Enable(USART_ID_1);
appData.stringPointer = string1;
appData.state = USART_TRANSMIT_FIRST_STRING;
break;
case USART_TRANSMIT_FIRST_STRING:
if(true == WriteString())
{
appData.state = USART_TRANSMIT_SECOND_STRING;
appData.stringPointer = string2;
}
break;
case USART_TRANSMIT_SECOND_STRING:
if(true == WriteString())
{
appData.state = USART_RECEIVE_DONE;
}
break;
case USART_RECEIVE_DONE:
if (appData.InterruptFlag)
{
if(true == PutCharacter(appData.data))
{
appData.InterruptFlag = false;
}
}
break;
default:
while (1);
}
}
/*******************************************************************************
End of File
*/
나는 내가 RealTerm에서받은 출력의 이미지를 첨부 할 수없는 것이 유감 나는 포인트가 부족하지 않는 한. 다른 문제가 발생할 수있는 보일러 전송률 불일치가있을 수 있습니다. 어떤 힌트 나 도움이 큰 도움이 될 것입니다. 미리 감사드립니다. 게시물의 실수로 사과드립니다.
안녕하세요 bismit5728 .. 답장을 보내 주셔서 감사합니다. 저는 CHART40 및 USB 미니 케이블을 사용하여 USART를 PC에 연결합니다. 나는이 문제를 알아 냈고 당신이 옳았다. 내가 한 실수는 시계 계획과 관련이 있습니다. 문제를 일으킨 POSCMOD는 HS였다. 나는 그것을 EC로 바꾸어 전송 된 문자를 제대로 볼 수 있었다. –