STM32F10x GPIO 控制 LED 灯示例 - 使用 GPIOA 控制 4 个 LED
#include 'stm32f10x.h' // Device header
void LED_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;//ÉùÃ÷Ò»¸ö½á¹¹Ìå
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4);
}
void LED1_ON(void) { GPIO_ResetBits(GPIOA, GPIO_Pin_1);//µÍµçƽµãÁÁÒý½Å1µÄµÆ }
void LED1_OFF(void) { GPIO_SetBits(GPIOA, GPIO_Pin_1); }
void LED1_Turn(void) { if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1) == 0)//¶ÁÈ¡Òý½Å1µÄÊä³öµçƽ״̬£¬Èç¹û·µ»ØÖµÎª0£¬¾Í±íʾΪµÍµçƽ£¬µÆÒѵãÁÁ { GPIO_SetBits(GPIOA, GPIO_Pin_1);//½«µçƽÖÃ¸ß } else { GPIO_ResetBits(GPIOA, GPIO_Pin_1);//½«µçƽÖÃµÍ } }
void LED2_ON(void) { GPIO_ResetBits(GPIOA, GPIO_Pin_2); }
void LED2_OFF(void) { GPIO_SetBits(GPIOA, GPIO_Pin_2); }
void LED2_Turn(void) { if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_2) == 0) { GPIO_SetBits(GPIOA, GPIO_Pin_2); } else { GPIO_ResetBits(GPIOA, GPIO_Pin_2); } } void LED3_ON(void) { GPIO_ResetBits(GPIOA, GPIO_Pin_3); }
void LED3_OFF(void) { GPIO_SetBits(GPIOA, GPIO_Pin_3); }
void LED3_Turn(void) { if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_3) == 0) { GPIO_SetBits(GPIOA, GPIO_Pin_3); } else { GPIO_ResetBits(GPIOA, GPIO_Pin_3); } }
void LED4_ON(void) { GPIO_ResetBits(GPIOA, GPIO_Pin_4); }
void LED4_OFF(void) { GPIO_SetBits(GPIOA, GPIO_Pin_4); }
void LED4_Turn(void) { if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4) == 0) { GPIO_SetBits(GPIOA, GPIO_Pin_4); } else { GPIO_ResetBits(GPIOA, GPIO_Pin_4); } } 解析每段代码
-
' #include 'stm32f10x.h' ': 包含了 STM32F10x 系列芯片的头文件。
-
' void LED_Init(void) ': 定义了初始化 LED 灯的函数。
-
' RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); ': 开启 GPIOA 的时钟。
-
' GPIO_InitTypeDef GPIO_InitStructure; ': 定义了一个 GPIO 初始化结构体。
-
' GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; ': 设置 GPIO 的模式为推挽输出。
-
' GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4; ': 设置 GPIO 的引脚为 PA1、PA2、PA3、PA4。
-
' GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ': 设置 GPIO 的速度为 50MHz。
-
' GPIO_Init(GPIOA, &GPIO_InitStructure); ': 将 GPIO 初始化结构体应用到 GPIOA 上。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4); ': 将 GPIOA 的 PA1、PA2、PA3、PA4 引脚全部设置为高电平,即关闭 LED 灯。
-
' void LED1_ON(void) ': 定义了打开 LED1 灯的函数。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_1); ': 将 GPIOA 的 PA1 引脚设置为低电平,即打开 LED1 灯。
-
' void LED1_OFF(void) ': 定义了关闭 LED1 灯的函数。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_1); ': 将 GPIOA 的 PA1 引脚设置为高电平,即关闭 LED1 灯。
-
' void LED1_Turn(void) ': 定义了翻转 LED1 灯状态的函数。
-
' if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1) == 0) ': 判断 GPIOA 的 PA1 引脚是否为低电平,即 LED1 灯是否打开。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_1); ': 将 GPIOA 的 PA1 引脚设置为高电平,即关闭 LED1 灯。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_1); ': 将 GPIOA 的 PA1 引脚设置为低电平,即打开 LED1 灯。
-
' void LED2_ON(void) ': 定义了打开 LED2 灯的函数。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_2); ': 将 GPIOA 的 PA2 引脚设置为低电平,即打开 LED2 灯。
-
' void LED2_OFF(void) ': 定义了关闭 LED2 灯的函数。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_2); ': 将 GPIOA 的 PA2 引脚设置为高电平,即关闭 LED2 灯。
-
' void LED2_Turn(void) ': 定义了翻转 LED2 灯状态的函数。
-
' if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_2) == 0) ': 判断 GPIOA 的 PA2 引脚是否为低电平,即 LED2 灯是否打开。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_2); ': 将 GPIOA 的 PA2 引脚设置为高电平,即关闭 LED2 灯。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_2); ': 将 GPIOA 的 PA2 引脚设置为低电平,即打开 LED2 灯。
-
' void LED3_ON(void) ': 定义了打开 LED3 灯的函数。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_3); ': 将 GPIOA 的 PA3 引脚设置为低电平,即打开 LED3 灯。
-
' void LED3_OFF(void) ': 定义了关闭 LED3 灯的函数。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_3); ': 将 GPIOA 的 PA3 引脚设置为高电平,即关闭 LED3 灯。
-
' void LED3_Turn(void) ': 定义了翻转 LED3 灯状态的函数。
-
' if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_3) == 0) ': 判断 GPIOA 的 PA3 引脚是否为低电平,即 LED3 灯是否打开。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_3); ': 将 GPIOA 的 PA3 引脚设置为高电平,即关闭 LED3 灯。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_3); ': 将 GPIOA 的 PA3 引脚设置为低电平,即打开 LED3 灯。
-
' void LED4_ON(void) ': 定义了打开 LED4 灯的函数。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_4); ': 将 GPIOA 的 PA4 引脚设置为低电平,即打开 LED4 灯。
-
' void LED4_OFF(void) ': 定义了关闭 LED4 灯的函数。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_4); ': 将 GPIOA 的 PA4 引脚设置为高电平,即关闭 LED4 灯。
-
' void LED4_Turn(void) ': 定义了翻转 LED4 灯状态的函数。
-
' if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4) == 0) ': 判断 GPIOA 的 PA4 引脚是否为低电平,即 LED4 灯是否打开。
-
' GPIO_SetBits(GPIOA, GPIO_Pin_4); ': 将 GPIOA 的 PA4 引脚设置为高电平,即关闭 LED4 灯。
-
' GPIO_ResetBits(GPIOA, GPIO_Pin_4); ': 将 GPIOA 的 PA4 引脚设置为低电平,即打开 LED4 灯。
原文地址: https://www.cveoy.top/t/topic/oAXK 著作权归作者所有。请勿转载和采集!