接上篇LED點亮;http://t.csdnimg.cn/9r6z7
目錄
一.硬件設計
二.軟件設計
三.完整代碼
四.結束語
一.硬件設計
? ? ? ? 按鈕接電源插入PB0引腳,如上圖所示
二.軟件設計
????????
void key_init()
{GPIO_InitTypeDef GPIO_InitStruct;//使能時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//B1 B11GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 ;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //對于輸入用途不大GPIO_Init(GPIOB, &GPIO_InitStruct);
}
首先就是初始化,輸入引腳.開打相應時鐘,初始化相應引腳,
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0; 讀取相應變化,就可以了
三.完整代碼
key.c
#include "key.h"
/*
函數功能:按鍵初始化
硬件連接:PA1
特性: 按下為低電平---沒按下高電平
*/
void Delay_s()
{unsigned char i;for(i=0;i<=200;i++) ;
}void key_init()
{GPIO_InitTypeDef GPIO_InitStruct;//使能時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//B1 B11GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 ;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //對于輸入用途不大GPIO_Init(GPIOB, &GPIO_InitStruct);
}u8 key_scan( )
{u8 ret = 0;if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0){ret = 1;} return ret;
}
key.h
#ifndef __KEY_H__
#define __KEY_H__//標準頭文件
#include "stm32f10x.h"void Delay_s(void);
void key_init(void);
u8 key_scan(void);#endif
led.c
#include "led.h"//LED 初始化程序
void led_init(void)
{ GPIO_InitTypeDef GPIO_LED; //定義GPIO結構體變量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOB端口的時鐘GPIO_LED.GPIO_Pin = GPIO_Pin_1; //LED端口配置GPIO_LED.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出GPIO_LED.GPIO_Speed = GPIO_Speed_2MHz; //IO口速度為2MHzGPIO_Init(GPIOA, &GPIO_LED); //根據設定參數初始化GPIOB0GPIO_SetBits(GPIOA,GPIO_Pin_1); //GPIOB0輸出高電平,初始化LED滅}
led.h
#ifndef __LED_H__
#define __LED_H__//標準頭文件
#include "stm32f10x.h"void led_init(void);#endif
main.h
#ifndef __MAIN_H
#define __MAIN_H//用戶自定義頭文件
#include "led.h"
#include "key.h"void delay_ms(void);#endif
main.c
#include "main.h"void Delay(){unsigned char i;for(i=0;i<=200;i++) ;
}int main(void)
{led_init(); //LED初始化key_init();//按鍵初始化while(1){if (key_scan() == 0){GPIO_ResetBits(GPIOA,GPIO_Pin_1); //點亮LED}else{GPIO_SetBits(GPIOA,GPIO_Pin_1); //關閉}}
}
四.結束語
? ? ? ? 以上就是STM32仿真按鍵點燈的全部了.