实验一 stm32F407VETx点亮流水灯
实验一、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点亮流水灯相关推荐
- 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯
本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...
- STM32单片机点亮流水灯
STM32单片机GPIO口点亮流水灯 任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了,本文将通过一个经典的流水灯程序,了解 STM32F1 的 IO 口作为输出LED:DS0 和 DS1 ...
- 嵌入式下的Hello World——点亮流水灯(STM32cubemx)
前言: 一.环境搭建 1. 下载STM32CuneMx 2.安装CubeMx 3.安装HAL库 二.CubeMx配置完成点亮流水灯 1.新建工程 2.环境配置 三.编写流水灯代码 1.打开由CubeM ...
- 实验二、8位流水灯电路设计
实验二 八位流水灯电路设计 实验目的 综合应用数字电子技术知识,按照要求设计并完成一个小规模的数字电路系统.进行硬件线路的设计.仿真.焊接.调试与实现. 使系统实现一种用于工厂的流水灯电路.在系统运 ...
- 流水灯实验报告c语言,PLC流水灯实验报告.pdf
PLC流水灯实验报告 基于WinPAC 的流水灯实验 实验目的 1.掌握PLC编程的基本流程,学会在ISaGRAF环境下编程和仿真. 2.学会在ISAGRAF创建工程.下载程序.调试方法. 3.掌握L ...
- 软件安装和点亮流水灯
软件安装和点亮流水灯 Keil和STM32CubeMX 主要是STM32CubeMX的使用 Keil和STM32CubeMX stm32mx直接安装就可以,keil安装的过程中需要配合破解软件keyg ...
- 用51单片机点亮流水灯
用51单片机点亮流水灯的几种方法 1. 直接按位操作一个一个点亮 #include<reg51.h>//头文件 sbit LED0=P2^0; //位定义单片机接LED灯的端口 sbit ...
- 51单片机点亮流水灯
51单片机点亮流水灯 51单片机点亮流水灯 首先介绍开发板easyboard上的LED灯 P1端口通过74HC573连接到LED灯,查询74HC573芯片手册,内部由8个D锁存器构成,当OE为低电平, ...
- keil流水灯c语言程序两个一起亮,51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)...
原标题:51单片机学习之陆 -- 1.2 第一个c51程序(点亮流水灯) 由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主. 1 事先准备 a 驱动安装, ...
最新文章
- Genome Biology:人体各部位微生物组时间序列分析Moving Pictures
- 如何克隆到非空目录?
- CodeForces 671C - Ultimate Weirdness of an Array
- ArcGis For Flex 之 QueryTask地理坐标展现【原创】
- 删除不同粒度的事实表记录中重复的度量值数据的SQL语句
- 【转】MATLAB的polar函数 极坐标绘制最大半径怎样设置
- mvn install时跳过Test
- 红旗系统 oracle,红旗linux的Asianux 3.0安装oracle10.2
- 三维散点图加colorbar
- 华为LTC/IPD/ITR三大核心流程变革看一篇文章就全明白啦!
- android图片的透明度变化,Android如何实现改变图片的透明度
- 永劫无间游戏设计之上瘾
- LeetCode 75. Sort Colors(三颜色排序→K颜色排序)
- Python爬取BOSS直聘商业分析岗职位描述信息
- 免费简单的为域名申请SSL证书
- 但管努力,莫问前程,事在人为,功不唐捐
- 华芯微特SWM32SRET6-50控制器应用记录
- Zerotier 搭建moon
- puppy linux安装到u盘分区,puppy linux如何安装?puppy linux安装到u盘方法
- [产品]:基于DTCloud开发的一款AI考试系统