STM32cubeMX STM32F1系列 IIC主机通讯

首先,用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双机通讯 主机程序

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
引用:以上就是我在使用STM32CubeMX开发STM32F1系列时需要的所有问题和其解决方案,分享给大家,避免再次入坑,有用的话点个赞吧~ 。 引用:CubeIDE里内置了CubeMX,如果使用内置的CubeMX,也需要设置STM32固件库路径。注意,切换一个新的Workspace后,其固件库路径自动恢复为默认值,如下图。使用这样默认的固件库路径也是有问题的,应该修改。可以设置为独立的CubeMX里的固件库路径,与其共用固件库。 。 引用:这四个问题是我在使用STM32F103C8T6 STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是: ① 调试选项问题(默认会造成下载器无法下载);② 定时器设置占空比的函数找不到报错的问题;③ 硬件iic的一个小bug(亲测oled可以正常显示);④ 串口寄存器与其它系列不一样的问题; 1. 调试选项问题 1.1. 问题描述 。 STM32CubeMX是一个非常有用的工具,但在使用过程中可能会遇到一些问题。其中,引用中列举了一些与STM32CubeMX使用相关的问题和解决方案。这些问题涉及到调试选项、定时器设置、硬件iic以及串口寄存器等方面。例如,调试选项问题可能会导致下载器无法正常下载,而定时器设置占空比的函数找不到报错的问题可能会影响定时器功能的正常运行。 如果你还有其他与STM32CubeMX相关的问题,可以告诉我,我会尽力为你解答。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉禾天成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值