stm32 串口发送多字节数据(结构体版本)

2023-05-16

话不多说先上代码

typedef struct shuju
{
  u8 sj0;   //帧头
  u8 sj1;
  u8 sj2;
  u8 sj3;
  u8 sj4;
  u8 sj5;
  u8 sj6;
  u8 sj7;
  u8 sj8;
  u8 sj9;    //帧尾
}shuju;

//实际使用
shuju shuju_1;

void shujucunchu(shuju *shuju_1)
{
  shuju_1->sj0 = 0xAA;  //帧头数据
  shuju_1->sj1 = 0xFD;
  shuju_1->sj2 = 0x02;
  shuju_1->sj3 = 0x00;
  shuju_1->sj4 = 0xDF;
  shuju_1->sj5 = 0xA5;
  shuju_1->sj6 = 0xA6;
  shuju_1->sj7 = 0xA7;
  shuju_1->sj8 = 0XA8;
  shuju_1->sj9 = 0xBB;  //帧尾数据
}

void send_data_(shuju*shuju_1,u8 len)
{
  static u8 date=0,i=0;
  for(i=0;i<len;i++) //使用sizeof计算结构体
  {
    date = *(((u8 *)&shuju_1->sj0)+i); //从帧头开始 然后依次向下指向
    USART_SendData(USARTx,date); //发送一个字节
    while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)!= SET);
  }
}

 

这个代码主要是解决了一个数据长而又无法一次性发送的问题

不懂就问,非常实用!

//主函数调用
shujucunchu(&shuju_1); //赋值
printf("sizeof:%d\r\n",sizeof(shuju_1)); //sizeof:10
send_data_(&shuju_1,sizeof(shuju_1)); //发送一帧数据

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32 串口发送多字节数据(结构体版本) 的相关文章

  • 深入理解计算机系统 -- 大端与小端字节序

    一 大端字节序 vs 小端字节序 字节序指一个多字节对象在内存中存储的方式 xff0c 小端字节序机器在存储多字节对象时采用低地址存低有效字节的策略 xff0c 大端则恰恰相反 字节序由CPU架构决定 xff0c 与操作系统无直接关系 像常
  • TCP连接建立

    TCP 一种面向来连接的 可靠的 基于字节流的传输层通信协议 面向连接 xff1a 数据在发送之前必须在两端建立连接 xff0c 方法就是我们熟知的三次握手连接 可靠传输 xff1a 通过多种机制来保证数据的正确传输 xff0c 比如序列号
  • UDP接收端收不到广播的消息问题排查

    网络调试助手可以互相发送 xff0c 而你的UDP广播代码却不行 你是广播 是不会被路由器转发的 但是在同一个交换机下 是可以收到广播的 还有就是 电脑的虚拟网卡会拦截广播操作 xff0c 因为你没有指定一个地址 xff0c 所以代码正确的
  • STM32带FIFO的DMA传输应用示例

    STM32系列芯片都内置DMA外设 xff0c 其中很多系列的DMA配备了FIFO 这里以STM32F429芯片及开发板为例 xff0c 演示一下带FIFO的DMA传输实现过程 大致情况是这样的 xff0c 我用TIMER1通道1的比较事件
  • 两种方式判断内存的大小端存储方式

    1 目的 xff1a 判断ubuntu操作系统的内存属于大端还是小端存储 2 源代码 两种方法判断大小端 xff08 处理器取值时的字节序 xff09 xff1a 1 字符指针 2 联合体 法1 if 1 include lt stdio
  • 字符串:求str1在str2中首次出现的位置。

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 基于ROS利用客户端和服务端实现C++节点和python节点间传送图像

    基于ROS利用客户端和服务端实现C 43 43 节点和python节点间传送图像 配置ROS下和python3通信以及配置python3可用的cv bridge 环境安装和使用 参考 xff1a https blog csdn net qq
  • iMaxB6充电介绍

    iMaxB6是一款多用途充电器 xff0c 能够为Li ion Li Poly Li Fe Ni Cd Ni MH和Pb类型电池充电 xff0c 支持6串以内的平衡充电 简要步骤 xff1a 1 连接正负电源 xff1b 2 连接平衡线 x
  • 基于stm32串口环形缓冲队列处理机制

    原文链接 xff1a 基于stm32串口环形缓冲队列处理机制 入门级 xff08 单字节 xff09 串口环形缓冲区实验 1 1 实验简介 最简单的串口数据处理机制是数据接收并原样回发的机制是 xff1a 成功接收到一个数 xff0c 触发
  • 源码安装nginx 1.23.1

    先看看仓库们 yum list nginx 已加载插件 xff1a fastestmirror langpacks Loading mirror speeds from cached hostfile base mirrors aliyun
  • Sublime Text运行C和C++程序

    原文链接 xff1a Sublime Text运行C和C 43 43 程序 Sublime Text 是一款当下非常流行的文本编辑器 xff0c 其功能强大 xff08 提供有众多的插件 xff09 界面简洁 还支持跨平台使用 xff08
  • keilC51编译常见错误和警告说明

    如对编译出错感兴趣的网友能否把你们常遇到的错误信息收集起来并提出最终的解决办法加以归纳以期共享 xff01 1 L15 重复调用 WARNING L15 MULTIPLE CALL TO SEGMENT SEGMENT PR SPI REC
  • RS485的电路以及相关波形

    1 RS485的电路 xff0c 要注意RE引脚一般是和DE引脚接在一起的 2 差分信号AB的波形 xff0c 高电平6 2v左右 xff0c 低电平 3v 3 A点的波形 4 B点波形 5 接收RX的波形
  • Ubuntu安装cmake

    Ubuntu18 04安装cmake 转载自https www cnblogs com yanqingyang p 12731855 html 一 使用安装命令 span class token function sudo span apt
  • C/C++混淆点-strcat和strcpy区别

    一 原因分析 假设 xff1a char str 61 NULL str 61 new char 11 你想为字符串str开辟一个存储十个字符的内存空间 xff0c 然后你现在有两个字符串 xff1a char c1 61 34 abc 3
  • QGC 添加电机测试功能

    组装过程中为了测试电机的连接以及转向 xff0c 现将电机测试功能单独制作一个页面 xff0c 以便使用 一 xff0c 效果 原型 实际效果总是差那么一丢丢 二 xff0c 实现思路 MavlinkConsole 功能 xff0c 可以在
  • 川崎duAro机器人 ROS_moveit demo

    说明 demo cpp Author hiics include lt ros ros h gt include lt iostream gt MoveIt include lt moveit move group interface mo
  • Windows10 下C/C++网络编程基本:socket实现tcp的例子

    1 说明 待编辑 2 代码 test server h span class token macro property span class token directive keyword ifndef span INCLUDE TEST
  • C++ 实现简单Tcp服务器端 -- Select方式

    test server h span class token macro property span class token directive keyword ifndef span INCLUDE TEST SERVER H span
  • curl 命令的使用:HTTP请求、下载文件、FTP上传下载

    1 curl 命令简介 cURL xff08 CommandLine Uniform Resource Locator xff09 xff0c 是一个利用 URL 语法 xff0c 在命令行终端下使用的网络请求工具 xff0c 支持 HTT

随机推荐