printf重定向之后无法运行
参考 CW32F003_StandardPeripheralLib_V1.6\Examples\UART\UART_Printf,在代码中添加了#ifdef __GNUC__/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
和
PUTCHAR_PROTOTYPE
{
USART_SendData_8bit(DEBUG_USARTx, (uint8_t)ch);
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
return ch;
}
在代码中添加printf之后进入调试模式点击RUN按钮是不能运行的。把print屏蔽之后就能运行。 1、建议直接在CW32 MCU StartKit上运行Printf例程试试。
2、检查DEBUG_USARTx,以及各复用GPIO定义是否与实际硬件匹配? pssyx 发表于 2025-5-6 10:22
1、建议直接在CW32 MCU StartKit上运行Printf例程试试。
2、检查DEBUG_USARTx,以及各复用GPIO定义是否与实 ...
我这边是自己做的板子,两个UART功能都是正常的。我原先用 USART_SendString(DEBUG_USARTx, str);
void USART_SendString(UART_TypeDef* USARTx, char *String)
{
while(*String != '\0')
{
USART_SendData_8bit(USARTx, *String);
while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
String++;
}
while(USART_GetFlagStatus(USARTx, USART_FLAG_TXBUSY) == SET);
}
发送字符串到电脑是正常的。说明硬件是没问题的。 你是不是没清除标志位? xionghaoyun 发表于 2025-5-7 09:20
你是不是没清除标志位?
哪个标志位? 堆栈溢出或内存不足? 中断冲突或优先级问题? 关闭不必要的中断。 查看编译日志。 用轻量级输出函数。
页:
[1]