打印
[应用相关]

模块的封装&GPIO的输入

[复制链接]
438|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
模块的封装&GPIO的输入


#include "stm32f10x.h"                  // Device header


void LED_Init(void)

{

        //使能GPIOA的时钟

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

       

        //GPIOA模式初始化

        GPIO_InitTypeDef GPIO_InitStruct;

        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;

        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;

        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(GPIOA,&GPIO_InitStruct);

        //GPIO的值初始化

        GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2);

}


void LED1_ON(void)

{

        GPIO_ResetBits(GPIOA,GPIO_Pin_1);

}


void LED1_OFF(void)

{

        GPIO_SetBits(GPIOA,GPIO_Pin_1);

}


void LED2_ON(void)

{

        GPIO_ResetBits(GPIOA,GPIO_Pin_2);

}


void LED2_OFF(void)

{

        GPIO_SetBits(GPIOA,GPIO_Pin_2);

}





#ifndef _LED_H

#define _LED_H


void LED_Init(void);


void LED1_ON(void);

void LED1_OFF(void);

void LED2_ON(void);

void LED2_OFF(void);


#endif






#include "stm32f10x.h"                  // Device header

#include "Delay.h"

#include "LED.h"

int main(void)

{


        //GPIO初始化

   LED_Init();

        while(1)

        {

                //流水灯的效果

                LED1_ON();

                Delay_ms(500);

                LED1_OFF();

                Delay_ms(500);

                LED2_ON();

                Delay_ms(500);

                LED2_OFF();

                Delay_ms(500);

        }

}




GPIO的读取函数


#include "stm32f10x.h"                  // Device header

#include  "Delay.h"


void KEY_Inint(void)

{

        //初始化时钟

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

        //初始GPIO配置

        GPIO_InitTypeDef GPIO_InitStruct;

        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;

        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;

        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(GPIOB,&GPIO_InitStruct);

}


uint8_t KEY_GetNum(void)

{

        uint8_t key_num;

        if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0)//如果按键被按下

        {

                Delay_ms(20);

                while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0);

                Delay_ms(20);

                key_num = 1;

        }

        if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0)//如果按键被按下

        {

                Delay_ms(20);

                while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0);

                Delay_ms(20);

                key_num = 2;

        }

        return key_num;


}



#ifndef _KEY_H

#define _KEY_H


void KEY_Inint(void);

uint8_t KEY_GetNum(void);


#endif





#include "stm32f10x.h"                  // Device header

#include "Delay.h"

#include "LED.h"

#include "KEY.h"


uint8_t Key_num;//定义一个全局变量


int main(void)

{


   LED_Init();

         KEY_Inint();

       

        while(1)

        {

                Key_num = KEY_GetNum();

                if(Key_num == 1)//如果按键1被按下

                {

                        LED1_ON();

                }

                if(Key_num == 2)

                {

                        LED1_OFF();

                }

        }

}





————————————————
版权声明:本文为CSDN博主「傻童:CPU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45159887/article/details/130334512

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

4090

帖子

3

粉丝