当前位置: 代码迷 >> 综合 >> STM32cubeMX STM32F1系列 IIC主机通讯
  详细解决方案

STM32cubeMX STM32F1系列 IIC主机通讯

热度:21   发布时间:2023-12-08 12:43:43.0

首先,用cube创建一个F1系列的主机工程。这里我选择了“STM32F103C8T6”型号的单片机最小系统板,封装为LQFP48。

然后使用IIC的话可以分以下几步走:(看过从机配置的同学可以直接跳至第四步)

一、设置烧录模式为Serial wire。按照图中箭头配置烧录模式

二、使用外部晶振

三、开启IIC

此处按照红色箭头配置即可。至于中断,如果不使用中断模式接发数据的话可以不开(本教程不使用中断)。

四、IIC基础参数设置

注意这里的红框圈中的部分。

五、时钟配置

六、设置项工程信息

 

七、代码生成项配置

设置完这些后即可点击生成代码。

然后我们打开生成的KEIl代码,我们首先查看keil中,IIC的初始化部分如下:

然后在main.c中添加宏定义如下:

添加发送数据存储区

然后我们在main函数的循环中添加程序如下:

int main(void)
{/* USER CODE BEGIN 1 */printf("init\n");/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_I2C1_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */printf("master\n");//我在本工程设置了串口打印,用于开机提示/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_I2C_Master_Transmit(&hi2c1, SLAVE_ADDR(SLAVE_ID), pData1, sizeof(pData1), 10000);//发送数据到从机HAL_Delay(100);//每次数据发送后,延时100ms}/* USER CODE END 3 */
}

编译后即可将程序烧录进单片机。

我在csdn同时上传了配套的从机代码。想看的同学可以移步我的资源去下载。(IIC双机通讯共三篇,此其一)

STM32cubemx STM32F1系列 IIC双机通讯 主机程序

  相关解决方案