实验一、stm32F407VETx点亮流水灯

一、前期准备
软件:STM32CubeMX,Keil(ARM)
硬件:stm32F407VETx开发板,stm32其他系列也可

二、设计指标
使电路板上的8个LED轮流点亮,并按键控制点亮速度。
三、操作
1、CubeMX操作
1.1依据开发板LED引脚设置CubeMX中8个LED的引脚为GPIO_Output模式,


2、按键设置



将按键设置为GUIO_Input模式:

1.3引脚User Lable及其他参数设置

选择外部高速时钟:

时钟设置:

工程配置:



点灯,控制其中一位有效,其他位无效:

/*---点灯函数---*/
void Setleds(uint8_t sta)
{HAL_GPIO_WritePin(L1_GPIO_Port,L1_Pin,(sta&0x01)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L2_GPIO_Port,L2_Pin,(sta&0x02)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L3_GPIO_Port,L3_Pin,(sta&0x04)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L4_GPIO_Port,L4_Pin,(sta&0x08)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L5_GPIO_Port,L5_Pin,(sta&0x10)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L6_GPIO_Port,L6_Pin,(sta&0x20)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L7_GPIO_Port,L7_Pin,(sta&0x40)?GPIO_PIN_RESET:GPIO_PIN_SET);HAL_GPIO_WritePin(L8_GPIO_Port,L8_Pin,(sta&0x80)?GPIO_PIN_RESET:GPIO_PIN_SET);
}

流水灯运行,有效位左移

while (1){Setleds(sta);HAL_Delay(time);if(run)       //流水灯运行,有效位左移{if(sta<0x80)sta<<=1;elsesta=0x01;}

按键扫描函数

/*-----------按键扫描----------*/
uint8_t KeyScan(void)
{uint8_t key=0;if(HAL_GPIO_ReadPin(K5_GPIO_Port,K5_Pin)==GPIO_PIN_SET){key=5;HAL_Delay(50);if(HAL_GPIO_ReadPin(K5_GPIO_Port,K5_Pin)==GPIO_PIN_SET)return key;else return 0;}if(HAL_GPIO_ReadPin(K6_GPIO_Port,K6_Pin)==GPIO_PIN_SET){key=6;HAL_Delay(50);if(HAL_GPIO_ReadPin(K6_GPIO_Port,K6_Pin)==GPIO_PIN_SET)return key;else return 0;}if(HAL_GPIO_ReadPin(K2_GPIO_Port,K2_Pin)==GPIO_PIN_RESET){key=2;HAL_Delay(50);if(HAL_GPIO_ReadPin(K2_GPIO_Port,K2_Pin)==GPIO_PIN_RESET)return key;else return 0;}if(HAL_GPIO_ReadPin(K3_GPIO_Port,K3_Pin)==GPIO_PIN_RESET){key=3;HAL_Delay(50);if(HAL_GPIO_ReadPin(K3_GPIO_Port,K3_Pin)==GPIO_PIN_RESET)return key;else return 0;}return 0;
}
 uint8_t key=KeyScan();/*-------------流水灯闪烁时间控制-------*/if(time>=50){if(key==2){time=time+100;/*-------蜂鸣器声音控制--------------------------*/HAL_GPIO_WritePin (voice_GPIO_Port,voice_Pin,GPIO_PIN_SET);HAL_Delay(50);HAL_GPIO_WritePin(voice_GPIO_Port,voice_Pin,GPIO_PIN_RESET);}if(key==3){time=time-100;/*-------蜂鸣器声音控制--------------*/HAL_GPIO_WritePin (voice_GPIO_Port,voice_Pin,GPIO_PIN_SET);HAL_Delay(60);HAL_GPIO_WritePin(voice_GPIO_Port,voice_Pin,GPIO_PIN_RESET);}}elsetime=100;
if(5==key){run=1;/*-------蜂鸣器声音控制--------------*/HAL_GPIO_WritePin(voice_GPIO_Port,voice_Pin,GPIO_PIN_RESET);HAL_Delay(50);HAL_GPIO_WritePin (voice_GPIO_Port,voice_Pin,GPIO_PIN_SET);}if(6==key){run=0;/*-------蜂鸣器声音控制--------------*/HAL_GPIO_WritePin (voice_GPIO_Port,voice_Pin,GPIO_PIN_SET);HAL_Delay(10);HAL_GPIO_WritePin(voice_GPIO_Port,voice_Pin,GPIO_PIN_RESET);}

实验一 stm32F407VETx点亮流水灯相关推荐

  1. 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...

  2. STM32单片机点亮流水灯

    STM32单片机GPIO口点亮流水灯 任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了,本文将通过一个经典的流水灯程序,了解 STM32F1 的 IO 口作为输出LED:DS0 和 DS1 ...

  3. 嵌入式下的Hello World——点亮流水灯(STM32cubemx)

    前言: 一.环境搭建 1. 下载STM32CuneMx 2.安装CubeMx 3.安装HAL库 二.CubeMx配置完成点亮流水灯 1.新建工程 2.环境配置 三.编写流水灯代码 1.打开由CubeM ...

  4. 实验二、8位流水灯电路设计

    实验二  八位流水灯电路设计 实验目的 综合应用数字电子技术知识,按照要求设计并完成一个小规模的数字电路系统.进行硬件线路的设计.仿真.焊接.调试与实现. 使系统实现一种用于工厂的流水灯电路.在系统运 ...

  5. 流水灯实验报告c语言,PLC流水灯实验报告.pdf

    PLC流水灯实验报告 基于WinPAC 的流水灯实验 实验目的 1.掌握PLC编程的基本流程,学会在ISaGRAF环境下编程和仿真. 2.学会在ISAGRAF创建工程.下载程序.调试方法. 3.掌握L ...

  6. 软件安装和点亮流水灯

    软件安装和点亮流水灯 Keil和STM32CubeMX 主要是STM32CubeMX的使用 Keil和STM32CubeMX stm32mx直接安装就可以,keil安装的过程中需要配合破解软件keyg ...

  7. 用51单片机点亮流水灯

    用51单片机点亮流水灯的几种方法 1. 直接按位操作一个一个点亮 #include<reg51.h>//头文件 sbit LED0=P2^0; //位定义单片机接LED灯的端口 sbit ...

  8. 51单片机点亮流水灯

    51单片机点亮流水灯 51单片机点亮流水灯 首先介绍开发板easyboard上的LED灯 P1端口通过74HC573连接到LED灯,查询74HC573芯片手册,内部由8个D锁存器构成,当OE为低电平, ...

  9. keil流水灯c语言程序两个一起亮,51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)...

    原标题:51单片机学习之陆 -- 1.2 第一个c51程序(点亮流水灯) 由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主. 1 事先准备 a 驱动安装, ...

最新文章

  1. Genome Biology:人体各部位微生物组时间序列分析Moving Pictures
  2. 如何克隆到非空目录?
  3. CodeForces 671C - Ultimate Weirdness of an Array
  4. ArcGis For Flex 之 QueryTask地理坐标展现【原创】
  5. 删除不同粒度的事实表记录中重复的度量值数据的SQL语句
  6. 【转】MATLAB的polar函数 极坐标绘制最大半径怎样设置
  7. mvn install时跳过Test
  8. 红旗系统 oracle,红旗linux的Asianux 3.0安装oracle10.2
  9. 三维散点图加colorbar
  10. 华为LTC/IPD/ITR三大核心流程变革看一篇文章就全明白啦!
  11. android图片的透明度变化,Android如何实现改变图片的透明度
  12. 永劫无间游戏设计之上瘾
  13. LeetCode 75. Sort Colors(三颜色排序→K颜色排序)
  14. Python爬取BOSS直聘商业分析岗职位描述信息
  15. 免费简单的为域名申请SSL证书
  16. 但管努力,莫问前程,事在人为,功不唐捐
  17. 华芯微特SWM32SRET6-50控制器应用记录
  18. Zerotier 搭建moon
  19. puppy linux安装到u盘分区,puppy linux如何安装?puppy linux安装到u盘方法
  20. [产品]:基于DTCloud开发的一款AI考试系统

热门文章

  1. 计算机等级考试考几级才能成为数据库工程师?
  2. gamc网卡驱动2-----gmac收发实现
  3. 睡眠助手APP开发解决方案
  4. 宝塔php缓存关闭,宝塔面板定期释放PHP占用内存
  5. 床的标准尺寸和规格都有哪种
  6. 把中文目录名称修改成英文首字母大写或中文拼音目录
  7. Python实现极大似然估计
  8. Python数学问题16:百钱买百鸡
  9. ggplot2-标度、坐标轴和图例7
  10. java计算机毕业设计喜枫日料店自助点餐系统源代码+数据库+系统+lw文档