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

文章目录

  • 前言
  • 一、常用的字符串函数
    • strcat字符串拼接函数
    • memset字符串赋值函数
    • strstr字符串判断函数
  • 二、串口的使用
    • 1.cubeMX的配置
    • 2.代码解析
  • 总结


前言

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

一、常用的字符串函数

strcat字符串拼接函数

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

#include
#include

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的配置

设置串口波特率
STM32智能家居7天小项目(2)串口的使用_第1张图片
开启串口中断
STM32智能家居7天小项目(2)串口的使用_第2张图片

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
}

总结

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

你可能感兴趣的:(STM32智能家居,stm32,单片机,arm,嵌入式硬件)