linux stm32 主从,STM32F407和STM32F051主从I2C通信方法
STM32F407和STM32F051主从I2C通信方法
作者:华清远见讲师
M4作为主机:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
while (1)
{
int i;
HAL_I2C_Master_Receive_IT(&hi2c1, 0x22, bbb,
4);
HAL_Delay(1000);
if(i2c_flag == 1)
{
i2c_flag = 0;
printf("\naddr is 11:");
for(i = 0; i < 4; i++)
{
printf("x ", aaa[i]);
}
printf("\naddr is 22:");
for(i = 0; i < 4; i++)
{
printf("x ", bbb[i]);
}
}
}
}
M0作为从机:
void IIC_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 , ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//GPIO_Mode_IN
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;//open-drain
GPIO_Init(GPIOB , &GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOB , &GPIO_InitStruct);
GPIO_PinAFConfig( GPIOB , GPIO_PinSource6, GPIO_AF_1);
GPIO_PinAFConfig( GPIOB , GPIO_PinSource7, GPIO_AF_1);
}
void IIC_Configuration(void)
{
I2C_InitTypeDef I2C_InitStruct;
I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;
I2C_InitStruct.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
I2C_InitStruct.I2C_DigitalFilter = 0x00;
I2C_InitStruct.I2C_OwnAddress1 = 0x22;
I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;
I2C_InitStruct.I2C_AcknowledgedAddress =
I2C_AcknowledgedAddress_7bit;
I2C_InitStruct.I2C_Timing = 0xb0420f13;//100Kbits
I2C_Cmd(I2C1, ENABLE);
I2C_Init(I2C1, &I2C_InitStruct);
}
int main(void)
{
peripheral_init();
board_init();
I2C1_isr.CR1 |= 0X08; //地址匹配产生中断
while(1)
{
if(Recv_flag == 1)
{
Recv_flag = 0;
if(I2C_GetFlagStatus(I2C1, I2C_FLAG_TCR) != SET)
{
printf("transfer\n");
for( i = 0; i < 5; i++)
{
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) != SET);
I2C_SendData(I2C1, Data_to_M4_1[i]);
}
}
}
}
}
void I2C1_IRQHandler(void)
{
uint8_t i = 0;
uint8_t j = 0;
I2C_ClearITPendingBit(I2C1, I2C_ISR_ADDR);
I2C1->ISR |= 0x00000001;
I2C_ClearFlag(I2C1, I2C_FLAG_ADDR);
printf("IIC irq in2\n");
Recv_flag = 1;
linux stm32 主从,STM32F407和STM32F051主从I2C通信方法相关推荐
- Linux下MySQL 5.7 主从复制(主从同步)
首先要准备两台服务器,一台主服务器(Master),另一台从服务器(Slave),然后要保证Master与Slave的版本要相同且Master不能高于Slave的版本,一般稳健的做法都是使其版本相同, ...
- linux下部署redis主从,Linux下安装Redis及Redis主从同步配置
一 ,Linux安装Redis 1.我们先配置redis的 yum 源 , 很多软件的找不到 yum 源 我们可以使用 EPEL 找到很多软件的yum源 2.使用命令 yum install epel ...
- STM32的I2C通信
STM32的两个GPIO引脚,分别用于SCL和SDA,按照I2C规约的时序,像控制LED灯那样控制引脚输出,若是接收数据时则读取SDA线上的电平,那就可以实现I2C通信了,这也是我们在51单片机上 ...
- mysql主从配置实现_MySQL主从配置实现
//MySQL主从配置 首先,两边都要安装MySQL,启动两边的MySQL 接着,配置主从,要保证主从数据都一样的 可以用rsync弄过去 在主上配置/etc/my.cnf server-id=1 l ...
- STM32——stm32 I2C通信代码配置(2)(学习笔记)
STM32--I2C通信配置 I2C的系统框架 1.通讯引脚 2.时钟控制逻辑 3.数据控制逻辑 4.整体控制逻辑 通信过程 写入过程 读取过程 I2C代码配置 I2C的初始化结构体 几个重要的函数 ...
- [STM32学习]——一文搞懂I2C总线
目录 I2C总线的概念 I2C最重要的功能包括: I2C的物理层 I2C主要特点: I2C的高阻态 I2C物理层总结: I2C的协议层 初始(空闲)状态 开始信号: 停止信号 数据有效性 应答信号 I ...
- mysql 主从同步不一致_MySQL 主从同步延迟的原因及解决办法
mysql 用主从同步的方法进行读写分离,减轻主服务器的压力的做法现在在业内做的非常普遍. 主从同步基本上能做到实时同步.我从别的网站借用了主从同步的原理图. 在配置好了, 主从同步以后, 主服务器会 ...
- mysql 5.6 互为主从_mysql5.6主从同步,互为主从配置
由于业务需要,需要做主从同步,互为主从等的mysql设置.主从设置主要涉及主从同步时使用的账号密码配置,my.cnf的配置,进入数据库进行master,slave配置.主要是这四个配置. 1,账号密码 ...
- Redis配置主从数据,实现主从库之间数据同步
一.背景 需求来源:在现代网络时代,随着用户访问量增加,网站并发量增加,数据库面临压力倍增,当并发到达一个巅峰值,服务器会宕机,那么如何避免这种现象出现呢? 下面是个人总结的几点解决方案: 1.增加服 ...
最新文章
- iOS将产品进行多语言发布,开发
- 被墙怎么搭建安卓开发环境
- 接口持续集成环境搭建
- LINUX下邮件服务器
- Java SecurityManager checkPermission()方法与示例
- Linux 延时函数
- vb.net中递归退到最外层_面试题被问到再也不慌,深究JavaScript中的深拷贝与浅拷贝...
- 序列化和反序列化(五)——敏感字段加密
- SecondNamenode作用
- 分布式任务调度相关介绍
- BurpSuite CA证书安装(拦截HTTPS协议)
- DRM在Android中
- c语言数组输入某年某月某日,编程:输入某年某月某日,判断这一天是这一年的第几天...
- C语言使用socket通过IP138获取外网IP
- C++——运算符的重载
- 安路TD和modelsim仿真
- 物联网|物联网领域常用通信类型
- mysql 介绍 怎么下载 驱动jar包 各种细节问题大详解
- R语言多元线性回归模型分析 习题
- 深度好文之Servlet技术详解(九)
热门文章
- QIIME 2教程. 13训练特征分类器Training feature classifiers(2020.11)
- matlab有没有查找替换,matlab-字符查寻与替换
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(boxplot)实战
- R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot)
- R语言ggplot2可视化散点图实战:绘制基础散点图、为所有散点添加标签、只为大于阈值的散点添加标签
- R语言t分布函数Student t distribution(dt, pt, qt rt )实战
- K-means聚类K值的选择、Calinski-Harabasz准则
- 基因课 15天入门生物信息(2021年) 第三天 Linux基础命令(3)
- 论文笔记 Medical Entity Linking using Triplet Network
- python笔记基础