小学生
最后登录1970-1-1
在线时间 小时
注册时间2022-1-13
|
- //stm32f103VCT6 指南者#include "stm32f10x.h"
- #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) //读取按键K1
- #define KEY2 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13) //读取按键K2
- int dis[]={0x0001,0x0002,0x0020,0x0003,0x0022,0x0021,0x0023};
- //延时函数
- void Delay(unsigned int count)
- {
- unsigned int i;
- for(;count!=0;count--)
- {
- i=5000;
- while(i--);
- }
- }
- //按键初始化
- void KEY_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = 0x0000; //选择按键的引脚 PA0
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin = 0x0400; //选择按键的引脚 PC13
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- }
- //按键获取
- int Key_Scan1(void)
- {
- int n=0;
-
- if(KEY1==0)
- {
- Delay(20);
- while(!KEY1);
- if(n==8)
- {
- n=8;
- return n;
- }else
- return ++n;
- }
- if(KEY2==0)
- {
- Delay(20);
- while(!KEY2);
- if(n==0)
- {
- n=0;
- return n;
- }else
- return --n;
- }
- return n;
- }
- //LED灯初始化
- void LED_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = 0x0023; //PB0,PB1,PB5(绿,蓝,红)
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- GPIO_SetBits(GPIOB, 0x0023);
- }
- int main(void)
- {
- int count;
-
- LED_Init();
- KEY_Init();
-
- while(1)
- {
- count=Key_Scan1();
-
- if(count)
- {
- switch(count)
- {
- case 1: GPIO_ResetBits(GPIOB,dis[0]);break;
- case 2: GPIO_ResetBits(GPIOB,dis[1]);break;
- case 3: GPIO_ResetBits(GPIOB,dis[2]);break;
- case 4: GPIO_ResetBits(GPIOB,dis[3]);break;
- case 5: GPIO_ResetBits(GPIOB,dis[4]);break;
- case 6: GPIO_ResetBits(GPIOB,dis[5]);break;
- case 7: GPIO_ResetBits(GPIOB,dis[6]);break;
- }
- }else Delay(10);
-
- //
- // GPIO_ResetBits(GPIOB,0x0001); //只开启PB0,绿
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- //
- // GPIO_ResetBits(GPIOB,0x0002); //只开启PB1,蓝
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- //
- // GPIO_ResetBits(GPIOB,0x0020); //只开启PB5,红
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- //
- // GPIO_ResetBits(GPIOB,0x0003); //开启PB0,PB1,青
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- //
- // GPIO_ResetBits(GPIOB,0x0022); //开启PB1,PB5,紫
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- //
- // GPIO_ResetBits(GPIOB,0x0021); //开启PB0,PB5,黄
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- //
- // GPIO_ResetBits(GPIOB,0x0023); //开启PB0,PB1,PB5,白
- // Delay(2000);GPIO_SetBits(GPIOB,0x0023);
- }
-
- }
复制代码
|
|