当前位置: 首页 > news >正文

STM32小实验二--流水灯

1.实验目的

LED灯交替闪烁

2.实验清单

  • STM32
  • ST-Link

3.代码

同上一个点亮LED的实验一样创建led.c,led.h两个文件编写代码,

3.1led.c

#include "led.h"
#include "sys.h"
//初始化GPIO函数
void led_init(void)
{GPIO_InitTypeDef gpio_initstruct;//打开时钟__HAL_RCC_GPIOB_CLK_ENABLE();//调用GPIO初始化函数gpio_initstruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;gpio_initstruct.Pull = GPIO_PULLUP;gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB,&gpio_initstruct);//关闭LEDled1_off();led2_off();
}
//点亮LED1的函数
void led1_on(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET); //拉低LED1引脚,点亮LED1
}
//熄灭LED1的函数
void led1_off(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET); //拉高LED1引脚,熄灭LED1
}
//翻转LED1状态的函数
void led1_toggle(void)
{HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}
//点亮LED2的函数
void led2_on(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET); //拉低LED2引脚,点亮LED2
}
//熄灭LED2的函数
void led2_off(void)
{HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET); //拉高LED2引脚,熄灭LED2
}
//翻转LED2状态的函数
void led2_toggle(void)
{HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
}

这个代码和第一个实验的代码很像,因为需要两颗LED的亮灭,所以在第十行的位置加一个或的符号,再将引脚写入就可以同时初始化两个引脚了。
然后下面的函数就是复制粘贴,将引脚号修改即可。要注意不要忘了在LED初始化时将LED2关闭的代码。

3.2main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
int main(void)
{HAL_Init();                         /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */led_init();while(1){ led1_on();delay_ms(500);led1_off();led2_on();delay_ms(500);led2_off();}
}

.c文件里的代码逻辑很简单,就是点亮LED1,等待0.5秒,关闭LED1,同时点亮LED2,等待0.5秒,关闭LED2,一直循环就可以实现。
完结


文章转载自:
http://antibody.wjrtg.cn
http://boule.wjrtg.cn
http://backyard.wjrtg.cn
http://bbs.wjrtg.cn
http://audiolingual.wjrtg.cn
http://blin.wjrtg.cn
http://carbonari.wjrtg.cn
http://backbench.wjrtg.cn
http://aforesaid.wjrtg.cn
http://adm.wjrtg.cn
http://boardwalk.wjrtg.cn
http://bisectrix.wjrtg.cn
http://children.wjrtg.cn
http://appoint.wjrtg.cn
http://anaerobiosis.wjrtg.cn
http://austronesia.wjrtg.cn
http://agatha.wjrtg.cn
http://adermin.wjrtg.cn
http://bridie.wjrtg.cn
http://bipack.wjrtg.cn
http://aphid.wjrtg.cn
http://ament.wjrtg.cn
http://barrett.wjrtg.cn
http://araneose.wjrtg.cn
http://amygdaline.wjrtg.cn
http://apocalypticist.wjrtg.cn
http://bather.wjrtg.cn
http://butanone.wjrtg.cn
http://bivariate.wjrtg.cn
http://blusher.wjrtg.cn
http://www.dtcms.com/a/281429.html

相关文章:

  • 性能提升30% ONLYOFFICE 文档 9.0.3 版本已发布:onlyoffice二次开发三件套-学习中心安装及使用指南-新手必备
  • Hello Kitty Cosmos光影特展北京首展开幕,沉浸式数字艺术+跨界非遗焕新超级IP
  • 【机器学习深度学习】大模型本地化部署指南:Ollama、vLLM、LMDeploy 与 ModelScope 深度解析
  • 记录一次使用crontab未执行的排错过程
  • 电脑桌面整理工具,一键自动分类
  • BPE(字节对编码)和WordPiece 是什么
  • Python 函数的维护性与复用性
  • Gartner《JavaScript: Top Use Cases, Frameworks and Architecture Constraints》学习心得
  • AI Agent :从核心概念到高级实践的系统性探索
  • Cursor Git
  • iOS V2签名网站系统源码/IPA在线签名/全开源版本/亲测
  • C++中的模板参数 vs 函数参数:编译期与运行期的分界线
  • 使用llama-factory进行qwen3模型微调
  • 2025 XYD Summer Camp 7.14 模考
  • 理解TCP如何稳定、高效地 工作在网络上的关键
  • PyTorch笔记6----------神经网络案例
  • esp32使用ESP-IDF在Linux下的升级步骤,和遇到的坑Traceback (most recent call last):,及解决
  • uniapp打包成 apk
  • 网络编程-epoll模型/udp通信
  • 在线知识付费市场:崛起态势与未来潜能​
  • 从输入网址到获取页面的过程
  • Redis主从同步原理(全量复制、增量复制)
  • 【STM32项目】植物养护设计
  • Zabbix钉钉告警
  • 线性代数小述(三)
  • 乐观锁和悲观锁
  • 【好盈电调】使用 ESP32 的 PWM 驱动无刷电调,电调型号:XRotor Pro 80A BLDC V4.1
  • PBI(产品基本信息)系统如何构建
  • 【stm32】新建工程
  • 知识付费小程序资质全解析