登录/注册

stm322个流水灯程序代码

stm322个流水灯程序代码

更多

以下是一个基于STM32(以STM32F103C8T6为例)的流水灯程序代码,使用标准外设库(Standard Peripheral Library)编写,包含详细中文注释:

#include "stm32f10x.h"                  // STM32标准库头文件

// 定义LED连接的GPIO引脚(假设LED接在GPIOA的0-7引脚)
#define LED_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | \
                  GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7)

// 简单延时函数(实际项目建议使用定时器)
void Delay(uint32_t count) {
    for(uint32_t i = 0; i < count; i++);
}

int main(void) {
    // 1. 初始化RCC时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟

    // 2. 配置GPIO参数
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = LED_PINS;          // 控制所有LED引脚
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  // 推挽输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 50MHz速度
    GPIO_Init(GPIOA, &GPIO_InitStructure);            // 初始化GPIOA

    // 3. 初始关闭所有LED(根据电路设计:高电平熄灭/低电平点亮)
    GPIO_SetBits(GPIOA, LED_PINS);  // 默认设置高电平(熄灭)

    // 4. 流水灯主循环
    while(1) {
        // 正向流水灯(PA0→PA7)
        for(uint8_t i = 0; i < 8; i++) {
            GPIO_ResetBits(GPIOA, 1 << i);  // 点亮当前LED(低电平)
            Delay(500000);                  // 延时
            GPIO_SetBits(GPIOA, 1 << i);     // 熄灭当前LED
        }

        // 反向流水灯(PA7→PA0)
        for(uint8_t i = 0; i < 8; i++) {
            GPIO_ResetBits(GPIOA, 0x80 >> i); // 点亮LED(高位开始)
            Delay(500000);
            GPIO_SetBits(GPIOA, 0x80 >> i);
        }
    }
}

关键说明:

  1. 硬件连接

    • LED阴极接GPIO引脚,阳极串联电阻后接VCC(高电平熄灭)
    • 若LED阳极接GPIO,阴极接地,需反转电平逻辑(用GPIO_ResetBits点亮)
  2. 延时函数

    • 示例中Delay为简单循环延时,实际项目建议使用定时器(如SysTick)精确延时
  3. 引脚修改

    • 若使用其他引脚(如GPIOB),需修改:
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
      GPIO_Init(GPIOB, &GPIO_InitStructure);
  4. 流水灯模式

    • 示例包含正向+反向流动
    • 可修改循环逻辑实现不同效果(如逐个点亮/熄灭、跑马灯等)

扩展建议:

实际开发中,请根据硬件原理图调整引脚定义和电平逻辑。此代码适用于Keil MDK开发环境,使用HAL库或LL库时需调整初始化函数。

基于单片机的流水灯电路设计

前面一课掌握了嵌入式程序源代码级调试,为复杂单片机实验程序的调试做好了准备工作。本次实验完成

2023-10-31 14:56:59

基于STM32F103VET8的流水灯设计实现

学习单片机都要学习流水灯,因为流水灯比较简单,易于实现,效果也比较好呈现。这里我用的单片机型号为STM32F103VET8

2022-02-21 06:12:04

如何使用STM32CubeMX点亮流水灯

目录一、使用STM32CubeMX点亮流水灯1.准备工作2.用STM32CubeMX生成

2022-02-10 06:17:24

流水灯显示Proteus图无代码分享

流水灯显示Proteus图无代码分享

资料下载 jf_14860815 2022-12-30 16:46:42

STM32学习】(3)流水灯的实现

学习单片机都要学习流水灯,因为流水灯比较简单,易于实现,效果也比较好呈现。这里我用的单片机型号为STM32F103VET8

资料下载 陆军航空兵 2021-12-24 19:39:49

交替控制流水灯闪亮的源代码程序免费下载

本文档的主要内容详细介绍的是交替控制流水灯闪亮的源代码程序免费下载。

资料下载 孙成红 2019-08-07 17:33:00

51单片机实现流水灯和中断处理的入门程序资料和代码免费下载

注:昨天有同学指正说流水灯会影响脉冲输出,造成4s时间的延误。这里说明下,程序设计的初衷是让每个任务独立运行,意思就是当流水灯任务执行的时候脉冲

资料下载 吴湛 2019-08-01 17:34:00

流水灯控制上下位机的程序代码免费下载

本文档的主要内容详细介绍的是流水灯控制上下位机的程序源代码免费下载。

资料下载 佚名 2019-05-27 17:50:14

基于STM32流水灯分为哪几个程序

STM32例子-------流水灯(标准库函数)工程在这里分为三个程序。

2022-01-11 08:25:16

stm32流水灯程序编译相关资料推荐

作业需要的软件有:keil5、proteus两个软件安装的步骤很简单,这里不再赘叙。stem32流水灯程序编译1、创建工程(1)project—

2021-12-17 08:08:15

怎么实现基于STM32单片机流水灯仿真与程序设计?

怎么实现基于STM32单片机流水灯仿真与程序设计?

2021-11-23 06:45:13

STM32mini版来写一流水灯

用STM32mini版写一个流水灯今天,我用STM32mini版来写一

2021-08-24 06:35:35

使用中断来实现流水灯

的单片机型号为STM32F103VET8个LED灯接在了PA口的低八位。按键接在PB0口,并使得PB0作为外部中断线。代码实现如下:#inclu

2021-08-13 08:38:38

基于Stm32_Clock_Init()函数的流水灯设计

原子的第一个例程流水灯中用了 Stm32_Clock_Init()函数,现在来解析一下:引用时

2021-08-09 08:29:52

STM32F1_ 外部NorFlash存储程序代码

STM32F1_外部NorFlash存储程序代码

2020-04-08 09:55:35

7天热门专题 换一换
相关标签