现象: 程序无法正常向下执行,debug 发现卡死在main中

原因:将串口重映射导致的错误,如果屏蔽fputc, 程序可以正常运行
完整重映射串口:
/**
* 函数功能: 重定向c库函数printf到DEBUG_USARTx
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
/**
* 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
后续查到应该要开启use microLIB

注意:一定要重编译!!!!
重新编译下载后,程序正常运行。
测试串口正常通讯。
文章讲述了在STM32开发中遇到的程序卡死在main的问题,原因是串口重映射导致的错误。通过屏蔽fputc函数并启用usemicroLIB,重编译后程序恢复正常,且串口通讯正常。
1万+

被折叠的 条评论
为什么被折叠?



