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通信方法相关推荐

  1. Linux下MySQL 5.7 主从复制(主从同步)

    首先要准备两台服务器,一台主服务器(Master),另一台从服务器(Slave),然后要保证Master与Slave的版本要相同且Master不能高于Slave的版本,一般稳健的做法都是使其版本相同, ...

  2. linux下部署redis主从,Linux下安装Redis及Redis主从同步配置

    一 ,Linux安装Redis 1.我们先配置redis的 yum 源 , 很多软件的找不到 yum 源 我们可以使用 EPEL 找到很多软件的yum源 2.使用命令 yum install epel ...

  3. STM32的I2C通信

      STM32的两个GPIO引脚,分别用于SCL和SDA,按照I2C规约的时序,像控制LED灯那样控制引脚输出,若是接收数据时则读取SDA线上的电平,那就可以实现I2C通信了,这也是我们在51单片机上 ...

  4. mysql主从配置实现_MySQL主从配置实现

    //MySQL主从配置 首先,两边都要安装MySQL,启动两边的MySQL 接着,配置主从,要保证主从数据都一样的 可以用rsync弄过去 在主上配置/etc/my.cnf server-id=1 l ...

  5. STM32——stm32 I2C通信代码配置(2)(学习笔记)

    STM32--I2C通信配置 I2C的系统框架 1.通讯引脚 2.时钟控制逻辑 3.数据控制逻辑 4.整体控制逻辑 通信过程 写入过程 读取过程 I2C代码配置 I2C的初始化结构体 几个重要的函数 ...

  6. [STM32学习]——一文搞懂I2C总线

    目录 I2C总线的概念 I2C最重要的功能包括: I2C的物理层 I2C主要特点: I2C的高阻态 I2C物理层总结: I2C的协议层 初始(空闲)状态 开始信号: 停止信号 数据有效性 应答信号 I ...

  7. mysql 主从同步不一致_MySQL 主从同步延迟的原因及解决办法

    mysql 用主从同步的方法进行读写分离,减轻主服务器的压力的做法现在在业内做的非常普遍. 主从同步基本上能做到实时同步.我从别的网站借用了主从同步的原理图. 在配置好了, 主从同步以后, 主服务器会 ...

  8. mysql 5.6 互为主从_mysql5.6主从同步,互为主从配置

    由于业务需要,需要做主从同步,互为主从等的mysql设置.主从设置主要涉及主从同步时使用的账号密码配置,my.cnf的配置,进入数据库进行master,slave配置.主要是这四个配置. 1,账号密码 ...

  9. Redis配置主从数据,实现主从库之间数据同步

    一.背景 需求来源:在现代网络时代,随着用户访问量增加,网站并发量增加,数据库面临压力倍增,当并发到达一个巅峰值,服务器会宕机,那么如何避免这种现象出现呢? 下面是个人总结的几点解决方案: 1.增加服 ...

最新文章

  1. iOS将产品进行多语言发布,开发
  2. 被墙怎么搭建安卓开发环境
  3. 接口持续集成环境搭建
  4. LINUX下邮件服务器
  5. Java SecurityManager checkPermission()方法与示例
  6. Linux 延时函数
  7. vb.net中递归退到最外层_面试题被问到再也不慌,深究JavaScript中的深拷贝与浅拷贝...
  8. 序列化和反序列化(五)——敏感字段加密
  9. SecondNamenode作用
  10. 分布式任务调度相关介绍
  11. BurpSuite CA证书安装(拦截HTTPS协议)
  12. DRM在Android中
  13. c语言数组输入某年某月某日,编程:输入某年某月某日,判断这一天是这一年的第几天...
  14. C语言使用socket通过IP138获取外网IP
  15. C++——运算符的重载
  16. 安路TD和modelsim仿真
  17. 物联网|物联网领域常用通信类型
  18. mysql 介绍 怎么下载 驱动jar包 各种细节问题大详解
  19. R语言多元线性回归模型分析 习题
  20. 深度好文之Servlet技术详解(九)

热门文章

  1. QIIME 2教程. 13训练特征分类器Training feature classifiers(2020.11)
  2. matlab有没有查找替换,matlab-字符查寻与替换
  3. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(boxplot)实战
  4. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot)
  5. R语言ggplot2可视化散点图实战:绘制基础散点图、为所有散点添加标签、只为大于阈值的散点添加标签
  6. R语言t分布函数Student t distribution(dt, pt, qt rt )实战
  7. K-means聚类K值的选择、Calinski-Harabasz准则
  8. 基因课 15天入门生物信息(2021年) 第三天 Linux基础命令(3)
  9. 论文笔记 Medical Entity Linking using Triplet Network
  10. python笔记基础