STM32智能家居7天小项目(2)串口的使用
【摘要】 @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)