STM32
直播中

nhcp

15年用户 1135经验值
私信 关注
[问答]

printf函数支持哪些格式的输出呢

printf函数支持哪些格式的输出呢?

怎样在主函数中去调用printf函数呢?

回帖(1)

刘嵩

2021-12-1 10:36:48
一。printf函数格式
printf函数具有强大的输出功能
%表示格式化字符串输出
目前printf支持以下格式的输出,例如:
printf("%c",a);输出单个字符。
printf("%d",a);输出十进制整数。
printf("%f",a);输出十进制浮点数.
printf("%o",a);输出八进制数。
printf("%s",a);输出字符串。
printf("%u",a);输出无符号十进制数。
printf("%x",a);输出十六进制数。
例如:
n = 15
printf(“The result is %d”, n); //通过屏幕输出十进制数15
n = 15.2
printf(“The result is %f”, n); //通过屏幕输出十进制浮点数15
二。实现方法
在uart.c文件中加入
#include “stdio.h”
//
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//把数据通过串口1循环发送,直到发送完毕 ,如果使用串口2,则改成 USART2
USART1->DR = (u8) ch;
return ch;
}
#endif
三。主函数中调用printf函数
int main(void)
{
u16 t;
u16 len;
u16 times=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("rn您发送的消息为:rnrn"); //rn为回车换行
for(t=0;t
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("rnrn");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(timesP00==0)
{
printf("rn战舰STM32开发板 串口实验rn");
printf(“正点原子@ALIENTEKrnrn”);
}
if(times 0==0)printf(“请输入数据,以回车键结束n”);
if(times0==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
delay_ms(10);
}
}
}


举报

更多回帖

发帖
×
20
完善资料,
赚取积分