基于STM32F1使用STMCubeMX配合Keil实现流水灯

一、实验工具

1. STM32CubeMx

  1. 配置Jre
  2. STM32CubeMX安装
  3. 详细安装教程

2. 安装固态库

Help->Manager
在这里插入图片描述
勾选所需的固态库文件,与自己所使用的开发板型号相同
在这里插入图片描述

二、STM32CubeMX实现LED灯点亮

1. 使用寄存器地址方式点亮

1. 使用STM32CubeMX生成代码

  1. 创建新项目 New Project

  2. 勾选芯片型号,使用STM32F103C8
    在这里插入图片描述

  3. 点击芯片详细信息,进入到芯片配置中,方便下一步进行操作
    在这里插入图片描述

  4. 配置相应引脚

    • System Core->SYS修改Debug为Serial Wire
      在这里插入图片描述
      在这里插入图片描述
    • 配置管脚,使用A7,B9,C15
      勾选引脚,勾选Output选项
      在这里插入图片描述 在这里插入图片描述
      重复上述步骤,完成三个引脚的配置
      可在GPIO中查看
      在这里插入图片描述
    • 修改GPIO管脚中输出等级
      在这里插入图片描述
  5. 生成代码
    ProJect Manager->Generate Code
    在这里插入图片描述
    在这里插入图片描述

2. 修改main函数

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* 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();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    GPIOA->ODR &= ~(1<<7); //??PA7,??????
		GPIOB->ODR |= 1<<9;	  //??PB9,??????
		GPIOC->ODR |= 1<<15;	  //??PC15,??????
		HAL_Delay(500);//??500??
	  
		GPIOA->ODR |= 1<<7;   
		GPIOB->ODR &= ~(1<<9);
		GPIOC->ODR |= 1<<15;	  
		HAL_Delay(500);
		
		GPIOA->ODR |= 1<<7;  
		GPIOB->ODR |= 1<<9;	  
		GPIOC->ODR &= ~(1<<15);
		HAL_Delay(500);

  }
  /* USER CODE END 3 */
}

3. 烧录点亮

  1. 进行烧录,先进行Build Target
    在这里插入图片描述
    在这里插入图片描述
  2. 使用msuisp进行烧录
    在这里插入图片描述
  3. 点亮
    在这里插入图片描述

2. 使用HAL库方式点亮

1. 生成代码

与使用寄存器点亮操作基本相同不做详细描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
与前文操作不同的是需要勾选Clock Configuration中勾选PLLCLK
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 修改main函数

修改main函数中while(1)

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);  // 灯1亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);  // 灯1灭
	  
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);  // 灯2亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);  // 灯2灭
	  
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET);  // 灯3亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);  // 灯3灭

3. 烧录点亮

在这里插入图片描述
使用mscuip进行烧录
在这里插入图片描述

三、总结

用STM32cube移植了一下之前写的程序,发现开发周期确实减少了,同时bug数量也减少了,但是就速度而言降了不少,总体来说还是不错的。而且可以为以后对RTThread实时操作系统的应用打下基础。
以及验证的功能有:

  • 普通GPIO输入输出。
  • EXTI外部中断
  • 硬件IIC驱动OLED
  • USART串口DMA的TX,RX传输。

四、参考

搭建STM32开发环境——STM32CubeMX,Keil5
使用STM32CubeMX实现流水灯
【STM32】基于STM32F4使用STM32CubeMX配合Keil点亮LED流水灯
STM32CubeMX学习笔记(4)——系统延时使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值