MSP432实现printf 输出

采用printf输出, 在单片机调试中当然是很方便的了。最近也是遇到了同样的问题,网上去搜大部分是STIM32,而且也没有找到调试成功的例子。这次我再MSP432,CCS上调通了, 贴出来记录一下。

要实现printf,就需要重写两个函数:

int  fputc(int _c, register FILE *_fp)

int  fputs(const char *_ptr, register FILE *_fp)

最开始我只写了 fputc( ), 发现只能输出字符串, 无法输出格式化的字符串,比如带%d的。 

最开始不知道为什么, 后来重写了fputs( )就可以了。

int  fputc(int _c, register FILE *_fp)
{
    MAP_UART_transmitData( DEBUG_UART_MODULE , (uint8_t) _c);
     while (!MAP_UART_getInterruptStatus(DEBUG_UART_MODULE,
                                        EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG));
     EUSCI_A_CMSIS(DEBUG_UART_MODULE)->IFG |= (EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG);
    return _c;
}
int  fputs(const char *_ptr, register FILE *_fp)
{
uint16_t i, len;
len = strlen(_ptr);
for(i=0; i {
MAP_UART_transmitData( DEBUG_UART_MODULE , (unsigned char)_ptr[i] );
while (!MAP_UART_getInterruptStatus(DEBUG_UART_MODULE,
EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG));
EUSCI_A_CMSIS(DEBUG_UART_MODULE)->IFG |= (EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG);
}
    return len;

}

代码也很简单, 串口初始化的过程我就不写了,两个函数主要是实现串口发送的功能。


你可能感兴趣的:(MSP432)