看了一下示例程序,并没有在工程中找到printf打印的示例,那好吧,我自已动手添加一个,复制了一个GPIO的工程,首先在初始化中添加初始化函数
- // UARTA -> myUART0 Pinmux
- //
- GPIO_setPinConfig(myUART0_UARTRX_PIN_CONFIG);
- GPIO_setDrivingCapability(myUART0_UARTRX_GPIO,GPIO_DRIVE_LEVEL_VERY_HIGH);
- GPIO_setPadConfig(myUART0_UARTRX_GPIO, GPIO_PIN_TYPE_STD | GPIO_PIN_TYPE_PULLUP);
- GPIO_setQualificationMode(myUART0_UARTRX_GPIO, GPIO_QUAL_ASYNC);
- GPIO_setPinConfig(myUART0_UARTTX_PIN_CONFIG);
- GPIO_setDrivingCapability(myUART0_UARTTX_GPIO,GPIO_DRIVE_LEVEL_VERY_HIGH);
- GPIO_setPadConfig(myUART0_UARTTX_GPIO, GPIO_PIN_TYPE_STD | GPIO_PIN_TYPE_PULLUP);
- GPIO_setQualificationMode(myUART0_UARTTX_GPIO, GPIO_QUAL_ASYNC);
上面的GPIO口初始化,再添加串口初始化程序
- void UART_init()
- {
- //myUART0 initialization
- UART_clearInterruptStatus(myUART0_BASE, UART_INT_TXFF | UART_INT_RXFF | UART_INT_RXERR | UART_INT_RXRDY_BRKDT | UART_INT_TXRDY | UART_INT_FE | UART_INT_OE | UART_INT_PE);
- UART_clearOverflowStatus(myUART0_BASE);
- UART_resetTxFIFO(myUART0_BASE);
- UART_resetRxFIFO(myUART0_BASE);
- UART_resetChannels(myUART0_BASE);
- UART_setConfig(myUART0_BASE, DEVICE_LSPCLK_FREQ, myUART0_BAUDRATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
- UART_disableLoopback(myUART0_BASE);
- UART_performSoftwareReset(myUART0_BASE);
- UART_setFIFOInterruptLevel(myUART0_BASE, UART_FIFO_TX0, UART_FIFO_RX0);
- UART_enableFIFO(myUART0_BASE);
- UART_enableModule(myUART0_BASE);
- }
需要注意的串口的GPIO口是GPIO28,GPIO29,
- // UARTA_RX - GPIO Settings
- //
- #define GPIO_PIN_UARTA_RX 28
- #define myUART0_UARTRX_GPIO 28
- #define myUART0_UARTRX_PIN_CONFIG GPIO_28_UARTA_RX
- //
- // UARTA_TX - GPIO Settings
- //
- #define GPIO_PIN_UARTA_TX 29
- #define myUART0_UARTTX_GPIO 29
- #define myUART0_UARTTX_PIN_CONFIG GPIO_29_UARTA_TX
然后添加一个文件retarget.c- #include <stdio.h>
- #include <stdint.h>
- #include <stddef.h>
- #include "board.h"
- #include "uart.h"
- int fputc(int ch, FILE *f)
- {
- uint8_t c = (uint8_t)ch;
- UART_writeCharArray(myUART0_BASE, &c, 1);
- return ch;
- }
- /* GCC/newlib: 提供 _write,以便 printf 重定向 */
- #if 1
- int _write(int fd, const void *buf, int count)
- {
- (void)fd;
- if (buf == NULL || count <= 0) return 0;
- UART_writeCharArray(myUART0_BASE, (const uint8_t *)buf, (uint32_t)count);
- return count;
- }
- #endif
最后在void example_main(void)中调用printf函数
大功告成
|