Proteus仿真STM32F103R6微控制器的GPIO(按键控制LED开关)

Proteus仿真STM32F103R6微控制器的GPIO,检查按键,控制LED灯的反转。。

输入:按键检测;输出:高低电平,控制LED。

一、原理图:

二、源码:

#include "stm32f10x.h"

int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	// 配置LED端口:GPIOB
	// 使能GPIOB端口时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	// 配置GPIOB口为输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	// 配置按键端口:GPIOC
	// 使能GPIOC端口时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	
	// 配置GPIOC口为输入模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	
	while(1)
	{
		if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0) == 1)
		{
			while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0) == 1)
			{
				__asm("nop");
			}
			// LED灯反转
			GPIOB->ODR ^= GPIO_Pin_All;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/ctrigger/article/details/112912180