STM32智能家居7天小项目(2)串口的使用

举报
yd_274589494 发表于 2023/07/25 11:30:38 2023/07/25
【摘要】 @TOC 前言今天是学习百问网7天智能家居项目的第二天,本篇文章将带大家了解常用的字符串函数串口的一些使用方法。 一、常用的字符串函数 strcat字符串拼接函数strcat函数是将一段字符串拼接到目的字符串上面。下面的例子先打印hello,再打印helloworld。#include<stdio.h>#include<string.h>int main(void){ char buf[25...

@TOC


前言

今天是学习百问网7天智能家居项目的第二天,本篇文章将带大家了解常用的字符串函数串口的一些使用方法。

一、常用的字符串函数

strcat字符串拼接函数

strcat函数是将一段字符串拼接到目的字符串上面。
下面的例子先打印hello,再打印helloworld。

#include<stdio.h>
#include<string.h>

int main(void)
{
	char buf[255] = { 0 };
	strcat_s(buf,sizeof(buf) ,"hello");
	printf("%s\n", buf);
	strcat_s(buf, sizeof(buf), "world");
	printf("%s\n", buf);

	return 0;
}

memset字符串赋值函数

memset函数可以将字符串数组进行整体赋值。
下面例子先打印hello然后再将字符串数组全部赋值为0。

	char buf[255] = "hello world";
	printf("%s\n", buf);
	memset(buf, 0, sizeof(buf));
	printf("%s\n", buf);

strstr字符串判断函数

strstr函数可以用来判断字符串是否存在某一字符串,存在返回1,不存在返回0。

	char buf[255] = "hello world";
	if (strstr(buf, "hello"))
	{
		printf("yes");
	}
	else
	{
		printf("NO");
	}

二、串口的使用

1.cubeMX的配置

设置串口波特率
在这里插入图片描述
开启串口中断
在这里插入图片描述

2.代码解析

将串口发送和接收函数封装好,方便我们使用。

static uint8_t rx_len;
static uint8_t rx_data;
static uint8_t usart_rx_buf[200];

// 串口3启动接收
void USART3_StartRx(void)
{
	HAL_UART_Receive_IT(&huart3, (uint8_t*)&rx_data, 1);
}

// 串口3中断回调函数(保存每次接收的数据,并启动下一次接收)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	usart_rx_buf[rx_len%200] = rx_data;
	rx_len++;
	HAL_UART_Receive_IT(&huart3, (uint8_t*)&rx_data, 1);
}

// 串口3接收的数据
uint16_t USART3_Receive(uint8_t *pdata)
{
	memcpy(pdata, (uint8_t*)usart_rx_buf, rx_len);
	return rx_len;
}

// 串口3发送数据
void USART3_Transmit(uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
	HAL_UART_Transmit(&huart3, pData, Size, Timeout);
}

// 清理串口3接收的数据
void USART3_ClearBuf(void)
{
	rx_len = 0;
	memset((uint8_t*)usart_rx_buf, 0, 200);//将数据都清除为0
}

总结

串口通信在平时项目开发过程中还是会经常使用到的,希望大家能够好好学习一下。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。