串口通信与Printf函数

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

串口向PC发送数据的过程以及Printf函数的作用串口发送数据的过程:在程序中,先给USART和GPIO的初始化结构体赋值,并通过初始化函数将相关寄存器进行初始化,,当然还有时钟的设置,复用引脚需要的相关设置等。当这些设置好以后说明USART模块已经做好了发送或接收数据的准备,具体的发送或接收还没有开始。我们把写好的程序通过预处理、编译、链接、汇编,生成机器码,被烧录进入程序存储区,然后处理器开始取指令并一条一条执行下去。也就是说,单片机会按照我们程序预定的设置设置好寄存器,当我们需要收发数据时,其实就是单片机把内存(变量)中的数据写入USART收发数据相关的数据寄存器中,然后收发寄存器会把寄存器中的数据一位一位的向pc机发送(或者是把PC串口中传入的数据一位一位的接受并存入相关变量中,(或直接通过DMA方式))。Printf函数的作用以及实现:数据的发送依靠的是向数据寄存器中写入数据,这个过程在库函数编程中是通过相关函数,比如USART_SendData来实现的。下面附上该函数的定voidUSART_SendData(USART_TypeDef*USARTx,uint16_tData){/*Checktheparameters*/assert_param(IS_USART_ALL_PERIPH(USARTx));assert_param(IS_USART_DATA(Data));/*TransmitData*/USARTx-DR=(Data&(uint16_t)0x01FF);}从该函数的定义中就可以看出,该函数的功能就是写数据寄存器(DR)。Printf是一个c语言标准库函数,或者更严谨一些,Printf是一个宏,在这个宏中调用了一个数据发送函数fputc。我们重写fputc这个函数,这样当我们调用Printf这个宏时,这个宏就会优先调用用户的函数,从而就实现了Printf的重映射。而Printf实现的作用就是“格式的”输出。其实发送数据依靠的最终仍然是fputc,或者说最终的USART_SendData。我们也可以自己编写一个Printf函数,来实现格式控制。

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功