STM32CUBE生成的代码调用printf不能打印

(1) keil选择调用微库,不勾选的话,应该是使用了标准库,标准库中printf有一种模式叫半主机模式(参考正点原子串口例程代码注释):

(2)main.c中添加:  #include <stdio.h>

(3)重定向函数实现,加在usart.c文件下面:

第二种方法:采用正点原子串口例程中的方法,调用标准库,避免使用半主机模式,在usart.c文件中添加以下代码:

#include "usart.h"
#include <stdio.h>	
#include "stm32f1xx_hal.h"


/* USER CODE BEGIN 0 */
//  
#if 1
#pragma import(__use_no_semihosting)             
//                
struct __FILE 
{ 
	int handle; 

}; 

FILE __stdout;       
//
int _sys_exit(int x) 
{ 
	x = x; 
} 
//
int fputc(int ch, FILE *f)
{      
	uint8_t temp[1]={ch};    
    HAL_UART_Transmit(&huart1, temp,1,2);   
	return 0;
}
#endif 

 要记得把int fputc ( int ch, FILE *f )重写,调用HAL库中的串口发送函数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值