STM32流水灯的两种实现方式(库函数版)

硬件连接

在这里插入图片描述
我接到了PA口0~7

参考代码

一些使用到的函数 可以参考我的这一篇文章

调用函数PAout(n)

#include "led.h"
#include "delay.h"
#include "sys.h"

int main(void)
{
    
    
    unsigned char i = 0;
    delay_init(); //延时函数初始化
    LED_Init(); //初始化与 LED 连接的硬件接口
    GPIO_SetBits(GPIOA, GPIO_Pin_All);//关闭所有的灯 注意A2开发版用的共阳极 这里是置1
    while(1)
    {
    
     
        for(i = 0;i<8;i++)
        {
    
    
            PAout(i) = 0;
            if(i>0)
                PAout(i-1) = 1;
            delay_ms(1000);
        }
        PAout(7) = 1;
    }
}

使用寄存器BSRR

注意:BSRR是写入1有效。高十六位写入1表示输出低电平,低十六位写入1表示输出高电平

#include "led.h"
#include "delay.h"
#include "sys.h"

int main(void)
{
    
    
    unsigned char i = 0;
    delay_init(); //延时函数初始化
    LED_Init(); //初始化与 LED 连接的硬件接口
    GPIO_SetBits(GPIOA, GPIO_Pin_All);//关闭所有的灯 注意A2开发版用的共阳极 这里是置1
    while(1)
    {
    
     
        for(i = 0;i<8;i++)
        {
    
    
            GPIOA->BSRR = 1<<(i+16);
            GPIOA->BSRR = 1<<(i-1);
            delay_ms(1000);
        }
        GPIOA->BSRR = 1<<7;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39592312/article/details/108911283