«

STM32学习笔记 Day1-Day3

Sweetiey 发布于 阅读:228 课程笔记


Day1

点灯的3个步骤

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//配置时钟
    GPIO_InitTypeDef A;
    A.GPIO_Mode = GPIO_Mode_Out_PP;//设置推挽输出
    A.GPIO_Pin = GPIO_Pin_13;//设置引脚号  GPIO_Pin_All设置所有
    A.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&A);//初始化引脚
    GPIO_SetBits(GPIOC,GPIO_Pin_13);//设置高电平
    GPIO_ResetBits(GPIOC,GPIO_Pin_13);//设置低电平

A15 B3 B4 默认是调试端口,不能直接使用

Day2

LED闪烁

写在循环内

            GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
            Delay_ms(500);
            GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);
            Delay_ms(500);

流水灯

GPIO_Write(GPIOA,~0x0080);//0000 0000 0000 0001  ~按位取反(低电平点亮)A0
        Delay_ms(500);
        GPIO_Write(GPIOA,~0x0002);//0000 0000 0000 0010  ~按位取反(低电平点亮)A1
        Delay_ms(500);
        GPIO_Write(GPIOA,~0x0004);//0000 0000 0000 0100  ~按位取反(低电平点亮)A2
        Delay_ms(500);
        GPIO_Write(GPIOA,~0x0008);//0000 0000 0000 1000  ~按位取反(低电平点亮)A3
        Delay_ms(500);

Day3

按键控制LED

按钮初始化

void Key_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置时钟
    GPIO_InitTypeDef A;
    A.GPIO_Mode = GPIO_Mode_IPU;//设置为输入模数
    A.GPIO_Pin = GPIO_Pin_1;
    A.GPIO_Speed = GPIO_Speed_50MHz;//可有可无
    GPIO_Init(GPIOA,&A);//初始化GPIO

}

获取按钮按下事件

uint8_t Key_getnum(void)
{
uint8_t num = 0;

if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)    //读取引脚电平 按键按下(引脚变成低电平)
{
Delay_ms(15);
    while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)//一直按下
    {
    GPIO_SetBits(GPIOC,GPIO_Pin_13);//di
        Delay_ms(50);
    GPIO_ResetBits(GPIOC,GPIO_Pin_13);//低
        Delay_ms(50);
    }
    ;按键松开
    Delay_ms(15);
    num = 1;

}
    return num;

}

LED改变状态

void LED_Turn(void)
{
    if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_14)==0)//读取led现有状态 0则引脚为低电平
    {
        GPIO_SetBits(GPIOC,GPIO_Pin_14);//设置为高电平
    }
    else
    {
        GPIO_ResetBits(GPIOC,GPIO_Pin_14);
    }

}

主循环

while(1)
    {       
Keynum = Key_getnum();
        if(Keynum == 1)//按键有按下
            LED_Turn();
}

STM32


扫描二维码,在手机上阅读