失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 实验二 软件开发环境搭建与 GPIO应用

实验二 软件开发环境搭建与 GPIO应用

时间:2020-11-04 22:52:12

相关推荐

实验二 软件开发环境搭建与 GPIO应用

实验二 软件开发环境搭建与 GPIO应用

相关电路代码文件下载:/ioorOyxic0h

目录

实验二 软件开发环境搭建与 GPIO应用一.实验目的二.实验内容三.电路设计说明四.电路图五.程序设计说明六.主要的程序源码七.实验结果八.总结

一.实验目的

(1)熟悉STM32CubeMX的安装与使用。

(2)熟悉MDK Keil软件的安装与使用。

(3)熟悉Proteus仿真软件的使用。

(4)掌握STM32中GPIO的特性与应用方法。

二.实验内容

利用红色、绿色、黄色发光二极管和数码管设计一个交通灯。交通灯由一组红、黄、绿二极管和两个数码管组成。初始状态下,绿灯亮30秒,然后黄灯闪烁3秒,接着红灯亮30秒,如此重复上述亮灯过程。同一时刻只有一个灯亮,红灯和绿灯亮时数码管显示剩余秒数。

(1)利用Proteus软件基于STM32F103设计交通灯电路。

(2)利用STM32CubeMX和MDK Keil设计交通灯程序,并在Proteus软件上仿真。

三.电路设计说明

准备两个数码管,分别表示个位数和十位数。使用一组红黄蓝LED。外加10Ω电阻和+5V电源若干,数码管和LED灯都需要接电阻和电源。将显示十位数的数码管的7个引脚依次接到PA0-PA6上,将显示个位数的数码管的7个引脚依次接到PC0-PC6上,将红色LED灯的引脚接到PB0,黄色LED灯的引脚接到PB1,绿色LED灯的引脚接到PB2。

四.电路图

图 1 实验设计电路图

五.程序设计说明

首先将控制数码管显示的数据存储到number数组中,以便后面使用。编写一个显示倒计时的函数daojishi。daojishi函数传入参数是要显示倒计时的秒数,经过计算提取出个位数和十位数,然后输出显示。构建延时函数delay,设定进行50万次空循环为1秒。主程序中先定义控制红黄绿灯显示的数据。在whlie循环中,首先显示绿灯,延时30秒并调用daojishi函数显示倒计时。然后显示黄灯,延时3秒,在这3秒钟内每秒都改变一下状态,闪烁一下,在这期间将数码管关闭,不显示任何数据。最后显示绿灯,延时30秒并调用daojishi函数显示倒计时。

六.主要的程序源码

unsigned char number[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void daojishi(int sec){int shi,ge;shi = sec/10;ge = sec%10;GPIOA->ODR=~number[shi];GPIOC->ODR=~number[ge];}void delay(int sec){int i;for (i=0;i<sec*500000;i++){}}int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();/* USER CODE BEGIN WHILE */unsigned int red = 0x0001;unsigned int yellow = 0x0002;unsigned int green = 0x0004;while (1){int j;GPIOB->ODR=~(green);for(j=30;j>0;j--){daojishi(j);HAL_Delay(100);}GPIOA->ODR=0xff;GPIOC->ODR=0xff;GPIOB->ODR=~(yellow);for(j=3;j>0;j--){if (j%2==0){GPIOB->ODR=0xff;}else{GPIOB->ODR=~(yellow);}HAL_Delay(100);}GPIOB->ODR=~(red);for(j=30;j>0;j--){daojishi(j);HAL_Delay(100);}}}

七.实验结果

开始仿真,首先亮绿灯,数码管从30开始倒计时,如图2所示。

图 2 绿灯亮时

绿灯倒计时结束时,绿灯熄灭,开始闪烁黄灯,数码管熄灭,如图3所示。

图 3 黄灯亮时

黄灯熄灭后亮红灯,数码管从30开始倒计时,如图4所示。红灯倒计时结束后恢复默认状态,如图2所示。

图 4 红灯亮时

八.总结

这是第一次完整的嵌入式实验。实验要求设计一个红绿灯及其倒计时显示。由于是第一次实验,开始时不知道怎么设计电路,通过查找资料和同学帮助,设计好了电路图。然后是编程部分。编程部分比较简单,使用几个循环就可以了。通过这次实验,让我对嵌入式实验有了简单的了解,我以后还会继续学习,继续提高自己的能力。

如果觉得《实验二 软件开发环境搭建与 GPIO应用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。