一。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("\r\n您发送的消息为:\r\n\r\n"); //\r\n为回车换行

  for(t=0;t

  {

  USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据

  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束

  }

  printf("\r\n\r\n");//插入换行

  USART_RX_STA=0;

  }else

  {

  times++;

  if(timesP00==0)

  {

  printf("\r\n战舰STM32开发板 串口实验\r\n");

  printf("正点原子@ALIENTEK\r\n\r\n");

  }

  if(times 0==0)printf("请输入数据,以回车键结束\n");

  if(times0==0)LED0=!LED0;//闪烁LED,提示系统正在运行.

  delay_ms(10);

  }

  }

  }

  

分享些串口方面的资料便于学习参考

(stm32串口应用)
http://www.makeru.com.cn/live/1392_1164.html?s=45051
PWM脉宽调制技术
http://www.makeru.com.cn/live/4034_2146.html?s=45051
基于STM32讲解串口操作
http://www.makeru.com.cn/live/1758_490.html?s=45051
通过Z-stack协议栈实现串口透传
http://www.makeru.com.cn/live/1758_330.html?s=45051

通过串口利用printf函数输出数据的更多相关文章

  1. 修改HAL标准库用printf函数发送数据直接输出

    主函数文件,请直接关注自己写上去的代码: 直接看43行代码:#include "stdio.h"//要添加这个头文件 还有97行到112行:实现用HAL库函数和printf函数发送 ...

  2. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  3. C笔记01:关于printf函数输出先后顺序的讲解

    关于printf函数输出先后顺序的讲解!! 对于printf函数printf("%d%d\n", a, b);函数的实际输出顺序是这样的先计算出b,然后再计算a,接着输出a,最后再 ...

  4. 使用fwrite()函数和fprintf()函数输出数据到文件时的区别

    使用书上的一个课后题为例 有5个学生,每个学生有3门课的成绩,从键盘输入学生数据(包括学号,姓名,3们课程成绩),计算出每个学生的平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中. ...

  5. 关于printf函数输出先后顺序的讲解!!

    对于printf函数printf("%d%d\n",a,b);函数的实际输出顺序是这样的先计算出b,然后在计算a,接着输出a,最后在输出b:例子如下:#include<ios ...

  6. SQLServer中利用NTILE函数对数据进行分组的一点使用

    本文出处:http://www.cnblogs.com/wy123/p/6908377.html NTILE函数可以按照指定的排序规则,对数据按照指定的组数(M个对象,按照某种排序分N个组)进行分组, ...

  7. 解决IAR printf函数输出中文字符乱码问题

    首先看一下IAR的中文字符的坑 这会对调试造成很大的干扰,因为眼见不一定为实. 你所期望的中文打印输出都成了乱码,心在滴血.... 解决方法详细,纯属个人摸索 1.新建notepad++文件,编码方式 ...

  8. c++用流控制成员函数输出数据

    #include<iostream> #include<iomanip> using namespace std; int main() { ; double b=314159 ...

  9. [STM32F10x] 使用printf函数进行串口调试问题

    硬件:STM32F103C8T6 平台:Keil ARM-MDk V5.11 利用printf函数通过串口(USART)进行调试时遇到的一个问题: printf("Hello, Mini-M ...

随机推荐

  1. vue中如何深度监听一个对象?

    大家都知道,Vue项目中对数据的监听,提供了一个很好的钩子watch,watch可以极其方便的监听我们常用数据类型值的变化,但通常当我们想监听一个对象中,某个属性值的变化时,很难达到我们预期的效果.那 ...

  2. 详解JDBC中的Class.forName(DriverName)

    在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法.通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态 ...

  3. 有关类朋友圈设计(3) -- 数据库设计&现有技术&流程设计

    在写之前,先说说当前的系统架构吧 spring cloud + zuul + eureka + oauth2 + redis + rabbitMq 这个系统是由我搭建的,当时采用的springClou ...

  4. 每日学习——iframe标签伪造ajax

    刚开始学习ajax,好难,看不懂啊看不懂. 伪造ajax加载网页 <!DOCTYPE html> <html> <head lang="en"> ...

  5. LateX出坑

    1 公式是用$ 包围着的  $ 2 \begin{equation} 里面的公式自动编号   \end{equation} 要达成这样的效果,暂时想到如下方法: 1 \begin{equation} ...

  6. linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql解决方案

    在Linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql,提示如下: 而导致连接错误的原因是MYSQL没有开启远程登录权限. 解决方案: 在mysql命令中执 ...

  7. 定要过python二级 选择第3套

    1 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. . 13. 14. 15. 16. 17. (1)说明了一个问题 所谓的方向是从左到右还是从右到左  是看的是步长  步长的 ...

  8. Loj#143-[模板]质数判定【Miller-Rabin】

    正题 题目链接:https://loj.ac/p/143 题目大意 给出一个数\(p\),让你判定是否为质数. 解题思路 \(Miller-Rabin\)是一种基于费马小定理和二次探测定理的具有较高正 ...

  9. Python接口自动化测试实战-----附源码

    目录 1. 接口定义 2. 基本流程 3. 需求分析 4. 用例设计 5. 脚本开发 6. 结果分析 接口定义: 接口普遍有两种意思,一种是API(Application Program Interf ...

  10. 联表多字段update更新语句

    前言 最近需要写联表多字段update更新语句,发现不同的数据库,SQL语法也不一样,正好我这里有MySQL.Oracle.PgSQL三种数据库环境,分别练习.实操这三种数据库的联表update语句 ...