stm32 发送完数据后 串口继续发送_stm32串口输出的几种常用方式

在使用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

{

//等待发送结束

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

//发送数据

USART_SendData(USARTx,buf[t]);

}

//等待发送结束

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

}

1484c4c07bd0498a94fc320143f2ae39
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值