STM32——流水LED灯

本文介绍如何使用STM32控制LED实现流水灯效果,包括实验要求、基础电路图和GPIO使用步骤,同时强调了代码中按键检测和延迟处理的重要性。
摘要由CSDN通过智能技术生成

实验要求

实验要求


效果图

这里写图片描述

基础电路

流水LED电路

原理也贼简单,就是用STM32控制各个led分别点亮然后代码写出不同的流水模式和速度模式.


GPIO使用流程

  1. 开启IO口的时钟(用外设就记得开时钟)

    void RCC_Configuration(void) 
    {
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能APB2控制外设的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    }
    
  2. 配置IO口

    void GPIO_Configuration(void) //使用某io口输入输出时,请务必对其初始化配置
    {
    GPIO_InitTypeDef GPIO_InitStructureA; //定义格式为GPIO_InitTypeDef的结构体的名字为GPIO_InitStructure
                                          //typedef struct { u16 GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; } GPIO_InitTypeDef;
    GPIO_InitTypeDef GPIO_InitStructureC;
    
    GPIO_InitStructureA.GPIO_Mode = GPIO_Mode_Out_PP;  //配置IO口工作模式为 推挽输出(有较强的输出能力)
    GPIO_InitStructureA.GPIO_Speed = GPIO_Speed_50MHz; //配置IO口最高的输出速率为50M
    GPIO_InitStructureA.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
    GPIO_Init(GPIOA, &GPIO_InitStructureA); //初始化GPIOA的相应IO口为上述配置,用于led输出
    
    GPIO_InitStructureC.GPIO_Mode = GPIO_Mode_IPU;  
    GPIO_InitStructureC.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructureC.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
    GPIO_Init(GPIOC, &GPIO_InitStructureC); //初始化GPIOC的相应IO口为上述配置,用于led输出
    }
    

    3.需要用的库函数

    delay_nms()    //延迟ms
    GPIO_ResetBits()    //IO口置低
    GPIO_SetBits()  //IO口置高
    GPIO_ReadInputDataBit() //读取IO口数据位

代码实现(main.c)

  • 按键输入检测要快,main()中的delay要切割来检测
  • 长按只能一次变化,要设置flag来检测按键是否松开
#include "stdio.h"
#include "stm32f10x.h"

void RCC_Configuration(void);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值