计算机系统应用教程网站

网站首页 > 技术文章 正文

stm32串口输出的几种常用方式 stm32串口程序讲解

btikc 2024-10-12 11:45:06 技术文章 7 ℃ 0 评论

在使用stm32做项目时,我们常常会使用到串口调试,通过串口来输出我们想要看的相关参数值,这样既方便有快捷。

具体方法有哪些呢,我自己整理了一下,这个也是借鉴了别人的用法。供大家参考学习。

1、使用printf语句通过串口输出我们想要的参数值

具体的用法:使用之前必须包含相应的头文件#include < stdio.h >

int fputc(int ch, FILE *f)//重定向,让printf输出到串口

{

USART_SendData(USART1, (uint8_t) ch);

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

return ch;

}

使用以上函数那必须在stm32在目标选项中必须勾选Use MicroLIB选项。同时当然需要配置stm32串口的相关初始化才可以,这样就可以使用printf函数来进行串口输出。可以实现在VS下编程使用的的printf函数。

2、使用宏定义的方式进行串口输出,其实与printf函数一样的,只是变了种形式而已,很方便的调用所使用的串口。

具体的用法:使用之前必须包含相应的头文件#include< stdio.h >

// 定义调试串口

#define DEBUG_UART UART7

// 是否输出调试信息

#define DEBUG_PRINTF

#ifdef DEBUG_PRINTF

#define debug(FORMAT, ...) printf(FORMAT, ##__VA_ARGS__)

#else

#define debug(FORMAT, ...)

#endif1234567891011

以上,可在文件的开始宏定义相关的内容,之后再用使用以下函数进行输出内容。同时在配置相关的串口内容即可使用调试串口。

int fputc(int ch, FILE *f)//重定向,让printf输出到串口

{

USART_SendData(DEBUG_UART, (uint8_t) ch);

while (USART_GetFlagStatus(DEBUG_UART, USART_FLAG_TXE) == RESET);

return ch;

}

3、使用串口发送单字节或多字的数据

/*************************************************

* @函数名称: USARTx_Send_Byte

* @函数功能: 串口单个字节

* @输入参数: USARTx: 选择发送数组使用的串口号

* byte: 要发送的数组首地址

* @输出参数: 无

* @返回值 : 无

* @其它说明: 无

*************************************************/

void USARTx_Send_Byte(unsigned char byte) //串口发送一个字节

{

USART_SendData(USARTx, byte); //通过库函数发送数据

while( USART_GetFlagStatus(USARTx,USART_FLAG_TC)!= SET);

//等待发送完成。 检测 USART_FLAG_TC 是否置1;

}

/*************************************************

* @函数名称: UARTx_Send_Str

* @函数功能: 串口发送字符串

* @输入参数: USARTx: 选择发送数组使用的串口号

* *s: 要发送的数组首地址指针

* @输出参数: 无

* @返回值 : 无

* @其它说明: 发送字符串函数应用指针方法

*************************************************/

void UARTx_Send_Str(unsigned char *s)

{

unsigned char i=0; //定义一个局部变量用来发送字符串

while(s[i]!='\0') //每个字符串结尾 都是以"\0" 结尾的

{

/*通过库函数发送数据*/

USART_SendData(USARTx,s[i]);

/*等待发送完成。检测 USART_FLAG_TC 是否置1*/

while( USART_GetFlagStatus(USARTx,USART_FLAG_TC)!= SET);

i++; //i++一次

}

}

/*************************************************

* @函数名称: USART_SendArray

* @函数功能: 串口发送多字节

* @输入参数: USARTx: 选择发送数组使用的串口号

* buf :要发送的数组首地址

* len :要发送的数组长度

* @输出参数: 无

* @返回值 : 无

* @其它说明: 无

*************************************************/

void USART_SendArray(USART_TypeDef* USARTx, u8 *buf, u8 len)

{

u8 t;

for(t=0;t<len;t++)//循环发送数据

{

//等待发送结束

while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET){};

//发送数据

USART_SendData(USARTx,buf[t]);

}

//等待发送结束

while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);

}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表