У меня есть плата на основе LPC1768 - LandTiger (стоит проверить руководство внизу). Для его программирования я использую Keil uVision4/72 Lite и J-Link EDU от Segger. Моя простая программа для взаимодействия с джойстиком и диодами работает отлично, но ...Печатный выход с использованием UART в микроконтроллере ARM Cortex-M3
Я пытаюсь реализовать отладки Printf, так что я могу видеть выход PRINTF в Keil «Debug (PRINTF) Viewer» окна. Проблема в том, что я не вижу выхода - я думаю, что нахожусь на правильном пути, потому что, когда я запускаю отладчик, я вижу Trace: Запуск внизу окна (до того, как он был Trace: No Synchronization). К сожалению, я ничего не вижу в окнах вывода UART и Debug.
Я потратил довольно много времени, пытаясь сделать его работу и был бы признателен за любую помощь, спасибо;) настройки
Мои Keil являются:
Project/Options для Target/Debug установлен на J-Link/J-Trace Cortex.
Тогда внутри его настройки у меня есть Segger отбираться с Порт: SW и MAX ЧАСЫ: 10 МГц.
Вкладка трассировки включен с 100Mhz тактовая и SWO прескалером = 17 (что приводит к 5.882352MHz SWO Clock).
ITM Стимул Порты устанавливаются Enable: 0xFFFFFFFF и Privilege: 0x0000000F
Вот часть моего кода:
определить FOSC 12000000
определяют FCCLK (FOSC * 8)
определяет FCCO (FCCLK * 3)
определяет FPCLK (FCCLK/4)
определяет UART0_BPS 115200
недействительного UART0_Init (недействительный)
{
uint16_t usFdiv;
/* УАПП0 */
LPC_PINCON-> PINSEL0 | = (1 < < 4);/* Вывод Р0.2 используется как TXD0 (Com0) */
LPC_PINCON-> PINSEL0 | = (1 < < 6);/* Pin P0.3 используется как RXD0 (Com0) */
LPC_UART0-> LCR = 0x83;
usFdiv = (FPCLK/16)/UART0_BPS;
LPC_UART0-> DLM = usFdiv/256;
LPC_UART0-> DLL = usFdiv% 256;
LPC_UART0-> LCR = 0x03;
LPC_UART0-> FCR = 0x06;
}
Отправив код:
INT UART0_SendByte (INT ucData)
{(! (LPC_UART0-> LSR & 0x20))
в то время как {};
возвращение (LPC_UART0-> THR = ucData);
}
И мой fputc для Printf (это называется - проверено)
INT fputc (интермедиат с, FILE * е)
{
если (c == '\ n') {
UART0_SendByte ('\ r');
}
возврата (UART0_SendByte (с));
}
Любые идеи?
С уважением!
Я не понимаю, вы говорите о возможностях трассировки вашего отладчика, и все же вы пишете байты на UART. Что вы ожидаете от этих байтов? У вас есть связь RS232 между плате и ПК? Обычно, если вы связываете свою программу с полуохождением, 'printf' отправляет данные в ID отладчика через порт отладки (JLink в вашем случае). Итак, либо вы 'printf', либо не переопределяете' fputc', и ожидаете выхода в окне отладки, либо отправляете в UART, подключаете RS232 к ПК и видите его на гипертерминале или что-то в этом роде. У меня, наверное, что-то не хватает. – Balau
@Balau: Вы должны опубликовать ответ, а не комментарий, - на вашем месте. – Clifford
Я смутился с информацией с сайта Keil. Вы, парни, на 100% прав - все, что мне нужно было, - правильно настроить параметры отладки Keil, а затем переопределить fputc с помощью ITM_SendChar из CMSIS. И все отлично! Спасибо! – Siegfried