你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32智能家居7天小项目 串口的使用

[复制链接]
STMCU小助手 发布时间:2022-5-21 19:00
前言
今天是学习百问网7天智能家居项目的第二天,本篇文章将带大家了解常用的字符串函数串口的一些使用方法。

一、常用的字符串函数
strcat字符串拼接函数

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

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

  3. int main(void)
  4. {
  5.         char buf[255] = { 0 };
  6.         strcat_s(buf,sizeof(buf) ,"hello");
  7.         printf("%s\n", buf);
  8.         strcat_s(buf, sizeof(buf), "world");
  9.         printf("%s\n", buf);

  10.         return 0;
  11. }
复制代码

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

  1.         char buf[255] = "hello world";
  2.         printf("%s\n", buf);
  3.         memset(buf, 0, sizeof(buf));
  4.         printf("%s\n", buf);
复制代码

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

  1.         char buf[255] = "hello world";
  2.         if (strstr(buf, "hello"))
  3.         {
  4.                 printf("yes");
  5.         }
  6.         else
  7.         {
  8.                 printf("NO");
  9.         }
复制代码

二、串口的使用
1.cubeMX的配置

设置串口波特率

84@IDMMC_]_4CW`C2UM$T_Y.png

开启串口中断

WUV}F}KCE984X%_SU6AD[`Q.png

2.代码解析
将串口发送和接收函数封装好,方便我们使用。

  1. static uint8_t rx_len;
  2. static uint8_t rx_data;
  3. static uint8_t usart_rx_buf[200];

  4. // 串口3启动接收
  5. void USART3_StartRx(void)
  6. {
  7.         HAL_UART_Receive_IT(&huart3, (uint8_t*)&rx_data, 1);
  8. }

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

  16. // 串口3接收的数据
  17. uint16_t USART3_Receive(uint8_t *pdata)
  18. {
  19.         memcpy(pdata, (uint8_t*)usart_rx_buf, rx_len);
  20.         return rx_len;
  21. }

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

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

复制代码

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


收藏 评论0 发布时间:2022-5-21 19:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版