STM32调试-串口打印函数及使用方法

发布者:安静宁静最新更新时间:2017-11-19 来源: eefocus关键字:STM32调试  串口  打印函数 手机看文章 扫描二维码
随时随地手机看文章

1.在usart.h文件里,添加以下代码:

#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);//循环发送,直到发送完毕   

USART1->DR = (u8) ch;      

return ch;

}

#endif 

2.使用printf()函数,打印数据,格式如下:
printf("\r\n数据打印:%d",len);


关键字:STM32调试  串口  打印函数 引用地址:STM32调试-串口打印函数及使用方法

上一篇:用STM32读取MPU6050模块的原始数据
下一篇:mini2440内存初始化

推荐阅读最新更新时间:2024-03-16 15:45

GP2Y0E02B测距模块89c52单片机串口程序
iic接口,GPIO1需要3.3V转5v模块 程序已经调试可以用,串口输出晶振11.0592,波特率9600 SCL=P0^6; iic接口需要3.3V转5v模块 SDA=P0^7; iic接口需要3.3V转5v模块 GPIO1=P0^5; //模块使能 #include reg52.h #include intrins.h #include math.h #include stdio.h //需要使用printf()函数故而包含该头文件 #define FOSC 11059200UL //系统外部时钟频率(无符号长整型) #define BAUD 9600 //欲配置的串口通信波特率值 #define DIS
[单片机]
【PIC32MZ】Usart串口通讯
串口通讯是一个很成熟的通讯协议,几乎所有MCU都配有串口,本篇将述在Harmony中如何使用Usart,使用设备为PIC32MZ2048EFH,其他PIC32MZ基本相似。 以下使用的是Harmony的动态驱动,要注意动态驱动的使用规则,动态驱动排序为Driver中配置顺序,即InstanceIndex,而非Usart ID的顺序。 串口使用流程如下,以串口2为例: 1、配置串口驱动 2、配置串口引脚 3、生成代码,使用串口 注意Dynamic的驱动对象都需要有一个Open动作来创建一个Handle,后续所有操作都是用Handle来代表这个驱动对象。所有动态驱动的中断都是采用注册回调函数的方式来使用,无需到sy
[单片机]
【PIC32MZ】Usart<font color='red'>串口</font>通讯
stm32F4 配置串口+DMA 接收不定长数据 串口空闲中断
串口是一种很常见的通讯接口,通过串口回传数据是很多智能型的传感器都拥有的特点。 很多智能型传感器内置单片机 通过单片机将原始的数据处理,然后以串口的形式发送给用户单片机,用户单片机在利用串口得来的信息进行决策。 那么有没有一种简化通讯的方式呢 ?那就是串口 +DMA了! 主要思想: 配置一个串口DMA接收 任务,任务搬运的数据量要大于一次通讯的总数据量(也就是DMA 的搬运工作还没结束 我们的数据就已经搬完了) 然后这时候因为串口的总线 没有数据传输了(数据传输频率不是特别高 完全占用总线的情况下,总线肯定会有一段时间空闲!) 这时候 因为串口的总线空闲会触发一个 串口总线控线中断,在这个中断里面 我们进行数据处理(获取感兴趣
[单片机]
stm32F4 配置<font color='red'>串口</font>+DMA 接收不定长数据 <font color='red'>串口</font>空闲中断
CPLD的串口电路设计
一、硬件电路设计   本文选用CPLD 是 ALTERA 公司的 EPM240T100 ,结合 MAX232 接口 芯片 进行 串口 通信设计,框图如下图1 所示。 图1 CPLD串口 通信模块 硬件设计    二、VHDL程序模块设计及描述   使用VHDL 对CPLD 进行编程,设计3 个模块,波特率发生模块, 接收器 , 发送器 。    1. 波特率发生模块   波特率 发生器 实际是一个 分频器 ,如前所述,本文设计的波特率为19.2kb/ 秒,设计使用的时钟频率为 10MHz ,所以 计数器 进行计数时计数到260进行翻转。   程序如下(关键部分保留,非必要部分用……代替):   ……   E
[嵌入式]
CPLD的<font color='red'>串口</font>电路设计
STM32 | 通俗易懂地串口通讯解析
平时使用串口打印出现乱码的绝大部分原因是串口波特率没对。那么我们怎么测量实际的波特率呢?在这之前,顺便一起回顾一下波特率的概念。 什么是波特率、比特率? 比特率(Bitrate)表示每秒钟传输的二进制位数,单位为比特每秒(bit/s)。 波特率(Baudrate)表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标。 码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。 常见的通讯传输中,用 0V 表示数字 0, 5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致。 如果在通讯传输中,有 0V、
[单片机]
<font color='red'>STM32</font> | 通俗易懂地<font color='red'>串口</font>通讯解析
STM8S003F使用IO口模拟串口(二)接收数据
在上一篇文章中我们介绍了IO口模拟串口数据的发送,这一篇文章我们介绍IO口模拟串口数据的发送。同样的,我们没有使用库函数和中断,我们使用简单的定时来完成数据的接收。 1、IO口模拟串口接收数据的原理 同样的,我们将要接收的数据认为是10位(实际上,我们在接收数据之前必须搞清楚我们将要接收的是什么,否则我们需要在模拟串口程序中添加其他代码来进行检测)。 同样的,我们事先知道发送数据的波特率为:9600。 我选择的是STM8S003F的PD3引脚作为模拟串口的接收引脚。 思路是这样的,我们使用定时器定时,通过判断是否是起始位(通过低电平判断,因为没有发送数据应该是高电平),得到起始位了以后,延时一个数据位发送的时间(我
[单片机]
两个单片机之间UART串口通信
这是一种非常普遍的单片机之前通信的配置形式。 ---------------------------------------------------------------------------------------------------------------------------- 相信很多人都对单片机与计算机或者芯片通信时,RXD与TXD如何连接比较困惑。因为在一些电路图中,有的是直连接法,有的是交叉接法,让人有点摸不着头脑。 首先需要明白两个概念,就是DTE和DCE。DTE是指数据终端设备,典型的DTE就是计算机和单片机。DCE是指数据通信设备,典型的DCE就是MODEM。RS232串口标准中的RXD和TX
[单片机]
STM32串口出现 ORE标志位的问题研究
测试环境,STM32L476, HAL库使用UART的时候,中断标志寄存器出现ORE错误,介绍如下: 代码错误原因: 1. 初始化串口,uart_USB_init();这个函数没有启动中断 2. 延时3000S,其中这个时候电脑有数据每隔50ms发给这个串口。 3. 启动中断接收。 HAL_NVIC_SetPriority(USART_IRQn, 5, 1); HAL_NVIC_EnableIRQ(USART_IRQn); 4. 出现ORE错误。 经过分析,可能2个原因,初始化串口之后,串口接收到数据(没处理),然后开中断又接收数据,所以两次接收中断和非中断处理有区别,也有可能是第一次非中断接收数据未处理。 解决办法:修改
[单片机]
<font color='red'>STM32</font><font color='red'>串口</font>出现 ORE标志位的问题研究
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved