【STM32】GPIO翻转操作实现流水灯

1.stm32cubemx配置




2.代码实现

实现四个灯的流转,一个灯亮500ms,然后灭500ms,四个灯都一样

1.打开GPIOB的时钟,以及配置模式

使用一个my_init()实现

c 复制代码
__HAL_RCC_GPIOB_CLK_ENABLE();  //GPIOB时钟使能

配置模式

1.配置输出引脚,因为有四个灯,四个引脚取或即可

c 复制代码
  GPIO_INIT.Pin=GPIO_PIN_10|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0;//配置输出引脚 

2.设置输出模式

选择推挽式输出

3.设置上下拉

c 复制代码
 GPIO_INIT.Pull=GPIO_NOPULL; //不用上下拉

4.高低速设置

c 复制代码
 GPIO_INIT.Speed= GPIO_SPEED_FREQ_LOW;//设置低速
c 复制代码
void MY_INIT(void)
{
   __HAL_RCC_GPIOB_CLK_ENABLE();

   GPIO_InitTypeDef GPIO_INIT;
	
   GPIO_INIT.Pin=GPIO_PIN_10|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0; 
	 GPIO_INIT.Mode=GPIO_MODE_OUTPUT_PP;
	 GPIO_INIT.Pull=GPIO_NOPULL;  
	 GPIO_INIT.Speed= GPIO_SPEED_FREQ_LOW;
	 HAL_GPIO_Init(GPIOB,&GPIO_INIT);

}

记得要在gpio.h声明

main.cc调用

2.配置四个引脚输出电平实现流水

循环,根据对应序号实现一个灯的亮暗,接着另一个灯的亮暗,我们需要使用延迟函数来方便观察

实现一个灯的亮暗,亮500ms,灭500ms

c 复制代码
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);//电平翻转
HAL_Delay(500);//延迟500ms
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);//电平翻转
HAL_Delay(500);//延迟500ms

实现流水:

c 复制代码
void Run(void)
{
   uint8_t i;
	 for(i=0;i<4;i++)
	   {
		    switch(i)
				{
					case 0:
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
					HAL_Delay(500);
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);
					HAL_Delay(500);
					break;
					case 1:
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_2);
					HAL_Delay(500);
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_2);
					HAL_Delay(500);
					break;
				  case 2:
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
					HAL_Delay(500);
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
					HAL_Delay(500);
					break;
				  case 3:
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
					HAL_Delay(500);
					HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
					HAL_Delay(500);
					break;
			
				}
		 
		 
		 
		 
		 
		 }

}

在gpio.h声明

在main.cc调用

3.演示

相关推荐
飞睿科技41 分钟前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计
嵌入式硬件·物联网·esp32·智能家居·乐鑫科技
来自晴朗的明天2 小时前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
17(无规则自律)2 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术2 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao3 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报4 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_110111 小时前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋12 小时前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障
梁洪飞15 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
进击的小头15 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机