使用STM32CubeMX实现流水灯


一、安装STM32CubeMX

(一)下载并安装

下载地址:https://www.st.com/en/development-tools/stm32cubemx.html

  1. 以管理员身份运行并安装 SetupSTM32CubeMX-6.3.0.exe ,进入下面这个界面后,点击Next
    在这里插入图片描述

  2. 点击"I accept the terms of this license agreement",接着选择Next
    在这里插入图片描述

  3. 选择I have read and understand…,然后点击next
    在这里插入图片描述

  4. 选择安装位置,点击next,然后点击yes
    在这里插入图片描述

  5. 选择Next
    在这里插入图片描述

  6. 安装完成后,选择Next
    在这里插入图片描述

  7. 点击Done就完成安装
    在这里插入图片描述

(二)安装固件库

运行STM32CubeMX 6.3,选择 Help->Magne 安装固件库
在这里插入图片描述


二、流水灯实现

运行STM32CubeMX 6.3,选择File下的New Project
在这里插入图片描述
选择自己的芯片类型(我这里用的是stm32f103c8t6),选择下边的item,然后Start Project
在这里插入图片描述
选择System Core下的SYS,将Debug设置为Serial Wire:
在这里插入图片描述

1. 配置时钟

将RCC 下的HSE 设置为Crystal/Ceramic Resonator
在这里插入图片描述
在Clock Configuration 下,选择PLLCLK
在这里插入图片描述

2. GPIO设置

选择GPIO,依次将B0、C15、A0设置为GPIO_Output:
在这里插入图片描述
将三个引脚的输出默认改为高电平High
在这里插入图片描述

3. 项目配置

在Project Manager下的Project中设置工程名称和工程路径,并选择编译软件:
在这里插入图片描述
在Code Generate中选择第一个,然后Generate Code,即生成代码:
在这里插入图片描述
打开项目中的main.c文件,并在while 循环中写入以下代码:

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

在这里插入图片描述
将电路连接好,然后编译代码,并烧录。结果如下:
在这里插入图片描述


三、波形图观察

  1. 在Keil 里面打开魔术棒,设置Debug
    在这里插入图片描述
  2. 点击调试
    在这里插入图片描述
  3. 选择逻辑分析仪
    在这里插入图片描述
  4. 点击Setup Logic Analy,添加要观察的引脚:
    在这里插入图片描述
  5. 输入管脚,Display Type选择Bit
    在这里插入图片描述
  6. 运行程序,即可看到波形图
    在这里插入图片描述

总结

通过HAL 库实现流水灯实验,也是更加里了解了GPIO 管脚的配置。并且通过观察波形,可以检测设置的周期是否正确。

参考

https://blog.csdn.net/qq_43279579/article/details/112213196
https://blog.csdn.net/qq_43279579/article/details/112233696
https://www.cnblogs.com/young-dalong/p/14728012.html

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
流水灯是一种简单的LED灯效,可以通过控制多个LED灯的亮灭顺序来呈现出一种类似于水流般的效果。在STM32中,我们可以使用CubeMX配置工具来生成代码并实现流水灯效果。 以下是基本步骤: 1. 打开STM32CubeMX,选择你使用的MCU型号。 2. 在Pinout & Configuration选项卡中,选择需要使用的GPIO引脚,将其配置为输出。 3. 在Clock Configuration选项卡中,根据需要配置系统时钟。 4. 在Project Manager选项卡中,选择生成代码所需的IDE和语言。 5. 生成代码并打开工程后,在main函数中添加以下代码: ```c /* USER CODE BEGIN 2 */ uint16_t leds[] = {GPIO_PIN_12, GPIO_PIN_13, GPIO_PIN_14, GPIO_PIN_15}; uint8_t led_index = 0; /* USER CODE END 2 */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(GPIOC, leds[led_index], GPIO_PIN_SET); HAL_Delay(100); HAL_GPIO_WritePin(GPIOC, leds[led_index], GPIO_PIN_RESET); led_index++; if (led_index >= 4) { led_index = 0; } /* USER CODE END 3 */ } ``` 该代码使用了一个leds数组来存储GPIO引脚的编号,led_index变量用于记录当前点亮的LED的编号。在while循环中,每次点亮一个LED,然后将该LED灭掉,再将led_index加1,以便下一个循环点亮下一个LED。当led_index大于等于4时,将其重置为0,以便重新从第一个LED开始循环。 6. 编译并下载代码到STM32开发板中,即可看到流水灯效果。 以上就是使用STM32CubeMX实现流水灯的基本步骤,可以根据需要对代码进行修改,实现更多的灯效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值