【HMGD】STM32/GD32 I2C DMA 主从通信
STM32 I2C配置
主机配置
主机只要配置速度就行

从机配置
从机配置相同速度,可以设置第二地址

因为我的板子上面已经有了上拉电阻,所以可以直接通信

STM32 I2C DMA 定长主从通信代码示例
int state = 0;
static uint8_t I2C_recvBuf[10] = {0};
static uint8_t I2C_sendBuf[10] = {2,1,2,3,4,5,6,7,8,9};void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
{HAL_I2C_Slave_Receive_DMA(&hi2c1, I2C_recvBuf, 5);state = 1;
}// I2C 干扰检测
void I2C2_ER_IRQHandler(void)
{printf("ERROR I2C\r\n");HAL_I2C_Slave_Receive_DMA(&hi2c1, I2C_recvBuf, 5);HAL_I2C_ER_IRQHandler(&hi2c2);
}int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_DMA_Init();MX_I2C1_Init();MX_USART1_UART_Init();MX_I2C2_Init();printf("hello i2c stm32 \r\n");HAL_I2C_Slave_Receive_DMA(&hi2c1, I2C_recvBuf, 5);while (1){// 可以多地址接收数据HAL_I2C_Master_Transmit_DMA(&hi2c2, (20<<1)|0x01 ,I2C_sendBuf, 5);//HAL_I2C_Master_Transmit_DMA(&hi2c2, (10<<1)|0x01 ,I2C_sendBuf, 5);if(state == 1){state = 0;for (int i=0; i<4; i++){ printf("[%d]:%d", i, I2C_recvBuf[i]);}I2C_sendBuf[0] = I2C_sendBuf[0] + 1;if(I2C_sendBuf[0] > 100){I2C_sendBuf[0] = 0;}printf("\r\n");}HAL_Delay(1000);}
}

示例代码下载
https://download.csdn.net/download/hmxm6/89324145
相关文章:
【HMGD】STM32/GD32 I2C DMA 主从通信
STM32 I2C配置 主机配置 主机只要配置速度就行 从机配置 从机配置相同速度,可以设置第二地址 因为我的板子上面已经有了上拉电阻,所以可以直接通信 STM32 I2C DMA 定长主从通信代码示例 int state 0; static uint8_t I2C_recvBuf[10] {0}; stat…...
leecode 226 翻转二叉树、101 对称二叉树、104 二叉树的最大深度
leecode 226 翻转二叉树、101 对称二叉树、104 二叉树的最大深度 leecode 226 翻转二叉树 题目链接 :https://leetcode.cn/problems/invert-binary-tree/description/ 题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。…...
Redux基础
简介 状态管理工具,集中式管理react、vue、angular等应用中多个组件的状态,是一个库,使用之后可以清晰的知道应用里发生了什么以及数据是如何修改,如何更新的 在项目中添加 Redux 并不是必须的,根据项目需求选择是否引入 Redux 三个原则 …...
国外目标公司的任何一个联系人也许都有意义
我们说跟进一个项目,最好能够联系上拥有决策权的人,不然中间隔着几重关系,所有的更新都需要层层审批申报,特别麻烦,总是要等,也许等到最后就是一场空。如果能够直接和老板或者是拍板的人沟通,则…...
因为本地证书太旧或不全导致的 HTTPS 访问失败问题20240520
因为本地证书太旧或不全导致的 HTTPS 访问失败问题 在生产环境中,我们经常需要使用 curl 命令来测试和调试 HTTPS URL。然而,最近我遇到了一个棘手的问题:在测试环境中使用 curl 可以正常访问某个 URL,但在生产环境中却遇到了 SS…...
Lua获取表的长度
1.代码 -- 创建一个表并添加一些元素 local myTable {10, 20, 30, 40}-- 打印表的长度 print(#myTable) -- 输出 4,因为表中有 4 个元素-- 使用 # 来遍历表中的所有元素 for i 1, #myTable doprint(myTable[i]) end -- 这将依次打印 10, 20, 30, 40...
python九九乘法表的打印思考及实现
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、问题引入 九九乘法表的显示需求 二、问题分析 嵌套循环的概念 屏幕宽度与换行的考虑…...
2.Spring中用到的设计模式
Spring框架中使用了多种设计模式来构建其强大且灵活的功能,这里举例说明Spring中的一些功能使用到的设计模式。 工厂模式:Spring容器本质是一个大工厂,使用工厂模式通过BeanFactory和ApplicationContext这两个核心接口来创建和管理bean对象。…...
.NET调用阿里云人脸核身服务端 (ExecuteServerSideVerification)简易流程保姆级教学
需要注意的是,以下内容仅限基础调用 功能说明 该功能是输入核验人的姓名和身份证以及人脸照片,去阿里库里面匹配,3个信息是否一致,一致则验证通过,需要注意的是,人脸有遮挡,或者刘海࿰…...
[大师C语言(第十二篇)]C语言堆排序技术详解
引言 堆排序(Heap Sort)是一种基于比较的排序算法,它利用堆这种数据结构的特点来进行排序。堆是一种近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父…...
Activity启动流程要点
一、Activity启动流程 Activity的启动流程一般是通过调用startActivity或者是startActivityForResult来开始的startActivity内部也是通过调用startActivityForResult来启动Activity,只不过传递的requestCode小于0Activity的启动流程涉及到多个进程之间的通讯这里主…...
lua 计算第几周
需求 计算当前赛季的开始和结束日期,2024年1月1日周一是第1周的开始,每两周是一个赛季。 lua代码 没有处理时区问题 local const 24 * 60 * 60 --一整天的时间戳 local server_time 1716595200--todo:修改服务器时间 local date os.date("*t…...
负载均衡策略
...
海外网红营销新趋势:“快闪式”营销如何迅速提升品牌曝光度
在当今数字化时代,海外网红营销已成为品牌迅速触达全球消费者、提升品牌曝光度和刺激销售的重要手段。其中,“快闪式”营销以其独特的时效性、创意性和互动性,成为品牌与海外网红合作的新趋势。本文Nox聚星将和大家探讨如何利用海外网红的影响…...
速看!打造专属数字化能力模型的七大关键!
在数字化浪潮中,企业如何打造适应自身发展的数字化能力模型?这是许多企业面临的重要课题。今天,通过众多企业使用蚓链数字化生态解决方案实践总结,为大家分享至关重要的七大经验,助你开启数字化转型之旅! 1…...
青蛙跳台阶问题
本期介绍🍖 主要介绍:青蛙跳台阶问题,青蛙跳台阶与斐波那契数列的关系👀。 文章目录 1. 题目2. 递归解题思路3. 迭代解题思路 1. 题目 从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶ÿ…...
linux日常运维2
下载linux离线安装包---- 利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 1. 先找个可以上网的linux操作系统,这里是以centos7操作系统为例,如果要使用centos6就先安装一个centos6的系统,然后让他可以上网,后面步骤如下 a.…...
flink cdc mysql整理与总结
文章目录 一、业务中常见的需要数据同步的场景CDC是什么FlinkCDC是什么CDC原理为什么是FlinkCDC业务场景flink cdc对应flink的版本 二、模拟案例1.阿里云flink sql2.开源flink sql(单机模式)flink 安装安装mysql3.flink datastream 三、总结 提示:以下是本篇文章正文…...
【三维重建】ePnP
PnP问题应用与一下场景: 已知三维点和对应二维点以及相机相机内参数,可以获取相机外参。 我们介绍其中的一种算法:ePnP 算法流程 1、ePnP算法首先在世界坐标系内寻找4个控制点,记作 C 1 w , C 2 w , C 3 w , C 4 w C_1^w,C_2^w,…...
C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
Linux 用户与用户组核心概念详解(零基础必懂)
前言Linux 是典型的多用户、多任务操作系统,支持多人同时登录、各司其职、权限隔离。所有文件、进程、权限都依托用户与用户组实现管控,是Linux权限体系的基石。彻底弄懂用户、用户组概念,是掌握服务器权限管控、账号运维的前提,本…...
Android加固反调试绕过:Frida动态劫持pthread_create实战
1. 这不是“破解”,而是理解Android加固对抗中的一次典型动态插桩实践你打开B站App,刚点开首页,进程就闪退了;或者在Frida脚本里下断点到pthread_create,App直接静默终止——这不是崩溃日志里常见的NullPointerExcepti…...
电池阻抗测量技术:伪随机序列与信号处理应用
1. 电池阻抗测量技术概述电池阻抗测量作为电化学系统状态监测的核心手段,其原理基于对电池施加特定激励信号并测量响应信号,通过分析两者的幅值和相位关系来获取阻抗谱。这种频域分析方法能够反映电池内部电荷转移、扩散过程等动力学特性,为电…...
BERTopic与概念图理论在物理教育文本挖掘中的应用实践
1. 项目概述:当物理教育遇上文本挖掘作为一名长期关注教育数据挖掘的从业者,我常常思考一个问题:我们如何能“听见”学生在物理学习过程中的“思维声音”?传统的试卷分数、选择题对错,只能告诉我们结果,却无…...
Rust内存管理模式:从所有权到智能指针的完整指南
引言 作为一名从Python转向Rust的后端开发者,我深刻体会到Rust内存管理的革命性设计。与Python的自动垃圾回收不同,Rust通过所有权系统在编译时保证内存安全,无需运行时开销。本文将深入探讨Rust的内存管理模式,从所有权规则到智…...
Windows 11系统下,Fiddler代理端口不是8888?这份Mumu模拟器网络调试避坑指南请收好
Windows 11系统下Fiddler与Mumu模拟器网络调试实战指南在移动应用开发和测试过程中,网络调试工具与模拟器的配合使用是必不可少的环节。许多开发者习惯性地认为Fiddler的默认代理端口就是8888,但在实际配置中,这个假设往往会导致一系列难以排…...
昇腾CANN cann-spack-package:Spack 包管理器的 CANN 集成实战
HPC(高性能计算)圈子里不用 pip 和 conda——用 Spack。Spack 是一个专为科学计算设计的包管理器,能同时管理一个软件包的多个版本(不同编译器、不同依赖版本、不同架构),每个变体独立安装在 spack/opt/ 下…...
Mootdx架构深度解析:Python金融数据接口的工程化实践
Mootdx架构深度解析:Python金融数据接口的工程化实践 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在金融科技快速发展的今天,数据获取的便捷性与稳定性成为量化分析的基…...
【应用实战】基于Dify与多Agent的凭证与档案管理
一、智能文档处理:基于Dify与多Agent的凭证与档案管理革新 在金融行业,文档处理贯穿业务始终。传统的纯人工方式不仅耗时费力,而且极易出错。智能文档处理(Intelligent Document Processing, IDP)融合了OCR、自然语言处…...
Pearcleaner:macOS应用彻底清理的终极解决方案,释放宝贵磁盘空间
Pearcleaner:macOS应用彻底清理的终极解决方案,释放宝贵磁盘空间 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾经遇到过这…...
