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);
}
}
}
关键说明:
-
硬件连接:
- LED阴极接GPIO引脚,阳极串联电阻后接VCC(高电平熄灭)
- 若LED阳极接GPIO,阴极接地,需反转电平逻辑(用
GPIO_ResetBits点亮)
-
延时函数:
- 示例中
Delay为简单循环延时,实际项目建议使用定时器(如SysTick)精确延时
- 示例中
-
引脚修改:
- 若使用其他引脚(如GPIOB),需修改:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_Init(GPIOB, &GPIO_InitStructure);
- 若使用其他引脚(如GPIOB),需修改:
-
流水灯模式:
- 示例包含正向+反向流动
- 可修改循环逻辑实现不同效果(如逐个点亮/熄灭、跑马灯等)
扩展建议:
- 添加按键控制流水灯方向/速度
- 使用PWM实现呼吸灯效果
- 通过定时器中断优化延时
实际开发中,请根据硬件原理图调整引脚定义和电平逻辑。此代码适用于Keil MDK开发环境,使用HAL库或LL库时需调整初始化函数。
基于STM32F103VET8的流水灯设计实现
学习单片机都要学习流水灯,因为流水灯比较简单,易于实现,效果也比较好呈现。这里我用的单片机型号为STM32F103VET8
2022-02-21 06:12:04
【STM32学习】(3)流水灯的实现
学习单片机都要学习流水灯,因为流水灯比较简单,易于实现,效果也比较好呈现。这里我用的单片机型号为STM32F103VET8
资料下载
陆军航空兵
2021-12-24 19:39:49
51单片机实现流水灯和中断处理的入门程序资料和代码免费下载
注:昨天有同学指正说流水灯会影响脉冲输出,造成4s时间的延误。这里说明下,程序设计的初衷是让每个任务独立运行,意思就是当流水灯任务执行的时候脉冲
资料下载
吴湛
2019-08-01 17:34:00
stm32流水灯程序编译相关资料推荐
作业需要的软件有:keil5、proteus两个软件安装的步骤很简单,这里不再赘叙。stem32流水灯程序编译1、创建工程(1)project—
2021-12-17 08:08:15
使用中断来实现流水灯
的单片机型号为STM32F103VET8个LED灯接在了PA口的低八位。按键接在PB0口,并使得PB0作为外部中断线。代码实现如下:#inclu
2021-08-13 08:38:38
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机