STM32F10x 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); } }
解析一下 内容:这段代码是一个简单的控制STM32F10x开发板上LED灯亮灭的程序。主要包括LED灯的初始化和控制函数,以及一些LED灯亮灭的操作函数。其中,LED_Init函数用于初始化LED灯的GPIO口,LED1_ON/OFF/Turn函数用于控制第一个LED灯的亮灭,LED2_ON/OFF/Turn函数用于控制第二个LED灯的亮灭,依此类推。这些函数的实现原理都比较简单,就是通过GPIO口控制LED灯的亮灭状态,其中Turn函数实现了LED灯状态的翻转。
原文地址: https://www.cveoy.top/t/topic/oAXy 著作权归作者所有。请勿转载和采集!