Beaglebone Black에서 UART0을 통해 문자열을 인쇄하려고합니다. 부트 로더가 UART0을 초기화하고 문자를 써야합니다. 나는 간단한 함수를 만들었습니다.C 문자열이 루프에서 올바르게 반복되지 않습니다.
void uart_put(unsigned char c)
{
while((UART0->LSR_r & 32) == 0);
UART0->THR = c;
}
시작 코드에서 다음 함수가 호출되었습니다.이 함수에서는 단순히 문자를 인쇄합니다.
#define SIZE_OF_ARRAY 7
int c_entry(void)
{
unsigned char s_name[SIZE_OF_ARRAY] = "Hello";
unsigned char a_name[SIZE_OF_ARRAY] = {'H','e','l','l','o','\0'};
unsigned int a_int[SIZE_OF_ARRAY] = {9,8,7,6,5,4};
int i = 0;
for(i = 0; i<6; i++)
{
uart_put('0'+i); /*print value of i*/
uart_put(9); /*print a tab*/
uart_put(s_name[i]); /*print char from string*/
uart_put(9); /*print a tab*/
uart_put(a_name[i]); /*print char from array*/
uart_put(9); /*print a tab*/
uart_put('0'+a_int[i]); /*print int from array*/
uart_put('\n');
uart_put('\r');
}
while(1);
return 0;
}
함수
문자의 배열로 잘 작동되고, 정수가 정상적으로 인쇄되지만이어야하는 문자열이 인쇄되지 않는다. 링커 스크립트 내에서
"while (name [i]! = '\ 0')" –
@SaeidYazdani 나는 그것이 무엇이든 변경하는 것을 의심합니다. BTW 왜 이렇게 :'uart_put (name [5]);'이 하나가 널 문자인가? –
당신의 정보를 위해서, 그리고 조금 익살 꾸러기를 할 때 줄 바꿈 시퀀스는 캐리지 리턴 - 개행이어야합니다. 다른 방법은 아닙니다. –