硬件连接
xvxccfff
固件库介绍
代码实现
#include "stm32f10x.h"
#define RCC_LED RCC_APB2Periph_GPIOB
#define LED_PORT GPIOB
#define LED_PIN GPIO_Pin_1
#define RCC_KEY RCC_APB2Periph_GPIOB
#define KEY_PORT GPIOB
#define KEY_PIN GPIO_Pin_2
void delay(int number)
{
for(int i = 0 ; i < number ; i++)
{
for(int j = 0 ; j <10000 ; j++) ;
}
}
void led_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_LED, ENABLE);
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Init(LED_PORT, &GPIO_InitStructure);
GPIO_SetBits(LED_PORT, LED_PIN); //关灯,即首先确保灯的状态是关闭状态
}
void key_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_KEY, ENABLE);
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(KEY_PORT, &GPIO_InitStructure);
}
int main(void)
{
u8 ReadValue;
led_init();
key_init();
while(1)
{
ReadValue = GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN); //读取按键的引脚
if(ReadValue==Bit_RESET)
{
GPIO_ResetBits(LED_PORT, LED_PIN); //开灯
delay(50);
}
else
{
GPIO_SetBits(LED_PORT, LED_PIN); //关灯
delay(50);
}
}
}