STM32 printf 与 MicroLIB 使用过程中的有用博文与注意事项

几篇好的博文:

keil中使用软件debug功能查看printf输出结果_c语言_曹乐乐爱学习-GitCode 开源社区 (csdn.net)icon-default.png?t=N7T8https://gitcode.csdn.net/662b46979ab37021bfb1a1b8.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzAzOTM1MCwiZXhwIjoxNzE3MTM0ODcyLCJpYXQiOjE3MTY1MzAwNzIsInVzZXJuYW1lIjoiaG9uZ3FpMTAyOSJ9.MqaaCN-8JDC6q_0AcpvfaPuPkBDVhXyH2AjZvbDJX7A

STM32程序不运行与MicroLIB讲解-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_36098477/article/details/117666808

STM32 HAL库:使用C标准库或MicroLIB实现printf | 多串口使用printf输出 | 结合DMA实现printf | 常见问题总结_stm32 microlib-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/struggle_success/article/details/134621868?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-134621868-blog-117666808.235%5Ev43%5Epc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.1&utm_relevant_index=4

可能是坑:

1.  可能会在stm32进行调试时,进入 LDR R0, =SystemInit卡死;

2. 勾选microLib的话,fatfs有点问题,不勾选就FATFS正常,但是程序脱离仿真器跑不起来,这样退出半主机模式就可以跑起来了。

3. MicroLIB不支持浮点运算,所以在有FPU单元的MCU上,使用MicroLIB并开启FPU会让程序死机或跑飞。

我的困惑:

1. 按照博文1,勾选MicroLIB,我的keil debug调试的时候,始终无法使用Debug(prinrf) Viewer,接到的信息是空白,而外接的串口线,软件是有信息输出的;没有找到原因。

后续解惑: 

1. 关于 Debug(prinrf) Viewer使用:把和串口有关系的初始化屏蔽掉,把下面的代码也屏蔽掉,选择MicroLIB。 Debug(prinrf) Viewer与真实串口输出不能同时存在。

#if 0
/* 告知连接器不从C库链接使用半主机的函数 */
#pragma import(__use_no_semihosting)             
//标准库需要的支持函数                 
struct __FILE 
{ 
	int handle; 

}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 

//重定义fputc函数 
int fputc(int ch, FILE *f)
{      
	// 不同芯片的串口标志位不一定相同!
	while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
	//串口发送完成,将该字符发送 
    USART1->DR = (u8) ch;      
	return ch;
}


//重定义,重定向scanf函数到串口 
int fgetc(FILE * F) {
	uint8_t ch = 0;
	HAL_UART_Receive(&huart1,&ch, 1, 0xffff);///<普通串口接收数据
    while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET){}///<等待发送完成
	return ch; 
}

#endif

Manage real-time enviroment>Compiler>STDOUT 选择EVR,选择ITM没有成功。

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值