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

【STM32】GPIO翻转操作实现流水灯

1.stm32cubemx配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.代码实现

实现四个灯的流转,一个灯亮500ms,然后灭500ms,四个灯都一样

1.打开GPIOB的时钟,以及配置模式

使用一个my_init()实现

__HAL_RCC_GPIOB_CLK_ENABLE();  //GPIOB时钟使能

配置模式
在这里插入图片描述
1.配置输出引脚,因为有四个灯,四个引脚取或即可
在这里插入图片描述

  GPIO_INIT.Pin=GPIO_PIN_10|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0;//配置输出引脚 

2.设置输出模式
在这里插入图片描述
选择推挽式输出

3.设置上下拉
在这里插入图片描述

 GPIO_INIT.Pull=GPIO_NOPULL; //不用上下拉

4.高低速设置
在这里插入图片描述

 GPIO_INIT.Speed= GPIO_SPEED_FREQ_LOW;//设置低速
void MY_INIT(void)
{__HAL_RCC_GPIOB_CLK_ENABLE();GPIO_InitTypeDef GPIO_INIT;GPIO_INIT.Pin=GPIO_PIN_10|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0; GPIO_INIT.Mode=GPIO_MODE_OUTPUT_PP;GPIO_INIT.Pull=GPIO_NOPULL;  GPIO_INIT.Speed= GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB,&GPIO_INIT);}

记得要在gpio.h声明
在这里插入图片描述
在这里插入图片描述
main.cc调用

2.配置四个引脚输出电平实现流水

循环,根据对应序号实现一个灯的亮暗,接着另一个灯的亮暗,我们需要使用延迟函数来方便观察
实现一个灯的亮暗,亮500ms,灭500ms

HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);//电平翻转
HAL_Delay(500);//延迟500ms
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);//电平翻转
HAL_Delay(500);//延迟500ms

实现流水:

void Run(void)
{uint8_t i;for(i=0;i<4;i++){switch(i){case 0:HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);HAL_Delay(500);HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_10);HAL_Delay(500);break;case 1:HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_2);HAL_Delay(500);HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_2);HAL_Delay(500);break;case 2:HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);HAL_Delay(500);HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);HAL_Delay(500);break;case 3:HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);HAL_Delay(500);HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);HAL_Delay(500);break;}}}

在gpio.h声明
在这里插入图片描述
在main.cc调用
在这里插入图片描述

3.演示

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作
  • 外包服务商靠谱吗?一文教你火眼金睛辨真相
  • Etherpad在线文档协作编辑工具
  • 【IOS兼容】IOS/IE new Date() 返回结果为invalid date
  • 微信支付商家转账到零钱:快速开通攻略及功能全解
  • 探索前沿科技:在本地系统上安装和使用Style TTS2进行高质量语音合成
  • word宏的概念
  • 《Python 面试热门问题五》
  • C++:类型转换
  • Linux之多线程概念
  • 深度学习5从0到1理解RNN(包括LTSM,GRU等):内容丰富(下)
  • Ubuntu22.04版本左右,开机自动启动脚本
  • 7个流行的开源数据治理工具
  • 「图::存储」链式邻接表|链式前向星(C++)
  • Python世界:输入输出之回文串判别实践
  • 78. Subsets
  • const let
  • Facebook AccountKit 接入的坑点
  • flutter的key在widget list的作用以及必要性
  • java取消线程实例
  • JDK9: 集成 Jshell 和 Maven 项目.
  • react 代码优化(一) ——事件处理
  • redis学习笔记(三):列表、集合、有序集合
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 工程优化暨babel升级小记
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何在 Tornado 中实现 Middleware
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 微信公众号开发小记——5.python微信红包
  • 在weex里面使用chart图表
  • MPAndroidChart 教程:Y轴 YAxis
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​如何在iOS手机上查看应用日志
  • ​业务双活的数据切换思路设计(下)
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • $.each()与$(selector).each()
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (C++哈希表01)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (六)c52学习之旅-独立按键
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (七)理解angular中的module和injector,即依赖注入
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (算法)Travel Information Center
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原)本想说脏话,奈何已放下
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转)一些感悟
  • (转)原始图像数据和PDF中的图像数据
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程