火速过模电知识,所以前面的理论部分就不再赘述,直接开始实战

LED 链接到标题

点亮 链接到标题

  • 接线是一个闭合回路,看起来他应该是直接将stm32芯片当成电源供电了。
  • 核心程序如下,其实和昨天的点亮指示灯基本一样,不过现在这个端口接的相当于是一个外设了
//配置时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//配置端口
//先配置号端口的三个参数
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);

或者我们也可以用写入操作来表示高低电平

GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //点亮LED
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); //熄灭LED

闪烁 链接到标题

这时候就要用到循环节了,在前面的静态过程中while一直是一个死循环,现在我们在里面放入一个延时函数,来实现闪烁的效果。

while (1)
{
    GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //点亮LED
    Delay_ms(1000); //延时500ms
    GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); //熄灭LED
    Delay_ms(100); //延时500ms
}

流水灯 链接到标题

  • 通过按位或的方式选中多个引脚(具体原因回归底层16进制即可知),不过为了方便,库函数里还定义了全选的概念,因此直接用就可以了。
  • 下面在循环中使用写操作,查看函数定义可以自定义端口,并且前面加~用来取反(低电平点亮)
  • 为了好调节时间,我将延迟时间变成一个可调变量
while (1)
{
    int t=500;
    GPIO_Write(GPIOA,~0x0001);//0000 0000 0000 0001
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0002);//0000 0000 0000 0010
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0004);//0000 0000 0000 0100
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0008);//0000 0000 0000 1000
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0010);//0000 0000 0001 0000
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0020);//0000 0000 0010 0000
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0040);//0000 0000 0100 0000
    Delay_ms(t);
    GPIO_Write(GPIOA,~0x0080);//0000 0000 1000 0000
    Delay_ms(t);
}

使用一些循环可以实现花样点灯,不再赘述