STM32
登录
直播中
nhcp
15年用户
1135经验值
私信
关注
[问答]
printf函数支持哪些格式的输出呢
开启该帖子的消息推送
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);
}
}
}
一。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);
}
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
Printf
函数
请问STM32的
printf
的
支持
哪些
格式
呢
?
2018-09-19
3657
如何对
printf
函数
的
输出
进行重定向
呢
2021-11-30
1080
如何去实现stm32的
printf
函数
输出
到串口
呢
2021-11-30
694
如何去实现
printf
函数
支持
代码的实验
呢
2021-12-07
1075
为什么STM32中的HAL库会
支持
printf
函数
呢
2021-11-30
463
printf
()
函数
怎样才能像C语言一样
输出
打印信息
呢
2021-12-01
675
如何让STM32使用
printf
函数
呢
2021-11-17
564
如何实现使用
printf
()
函数
在STM32串口上
输出
数据
呢
2021-12-02
586
如何对
printf
()
函数
或scanf()
函数
进行重定向
呢
2021-11-30
1320
如何实现STM32对
printf
打印
输出
信息的
支持
呢
2021-12-02
486
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分