STM32学习笔记 Day1-Day3
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();
}
扫描二维码,在手机上阅读