本帖最后由 正点原子运营 于 2023-10-18 18:12 编辑
第七十二章 综合测试实验
1)实验平台:正点原子探索者STM32F407开发板
2) 章节摘自【正点原子】STM32F407开发指南 V1.1
3)购买链接:https://detail.tmall.com/item.htm?id=609294673401
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/stm32/zdyz_stm32f407_explorerV3.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)STM32技术交流QQ群:151941872
72.2.8 记事本 双击主界面的记事本图标,首先弹出模式选择对话框,如图72.2.8.1所示: 记事本支持2种模式:1,新建文本文件,这种方式完全新建一个文本文件(以当前系统时间命名),用来输入信息。2,打开已有文件,这种方式可以对已有的文件进行编辑。
上图中,右侧的界面为我们选择新建文本文件后的界面,此时出现一个空白编辑区和一个闪烁的光标,我们通过下方的键盘输入信息即可,这个输入键盘和我们的手机键盘十分类似,输入方法也是一模一样,支持中文、字母、数字和手写识别输入等几种输入方式,如图72.2.8.2和图72.2.8.3所示: 其中,中文输入就是我们前面T9拼音输入法实验的具体运用,而手写识别的输入界面,我们也是用到前面手写识别实验的知识实现的。
只要新建文本文件有被编辑过,那么在返回(按TPAD返回)的时候,系统会提示是否保存,如图72.2.8.4所示: 上图中,左侧图片为提示保存界面,如果选择确定,该文件将被保存在TF卡根目录的TEXT文件夹里面。右侧图片为打开已有文件进行编辑的界面,这样我们就可以在开发板上编辑.txt/.h/.c/.lrc文件了。
72.2.9 运行器双击主界面的运行器图标,首先进入文件浏览界面,如图72.2.9.1所示: 上图中,左侧为文件浏览界面,图中显示了可运行的bin文件有3个,这些全部来自我们的标准例程对应的实验。本运行器支持120K字节以内的程序运行(FLASH+SRAM总共不超过120K),很多例程都可以生成SRAM版本的bin文件,在运行器里面运行。SRAM版本.bin文件的生成办法,请参考串口IAP实验这个章节,里面有详细介绍。通过运行器,大家可以直接运行我们大部分例程,而不用再去刷代码了,方便大家测试和验证我们的实验。
右侧的图片是运行前的警告界面,因为一旦执行.bin文件,我们的系统将无法恢复,只能靠复位重启。点击确定之后,STM32就开始运行你所选择的.bin文件了,实验现象和对应实验所描述的现象一模一样。
72.2.10 手写画笔 双击主界面的手写画笔图标,首先弹出模式选择对话框,如图72.2.10.1所示: 上图中,左侧图片为我们双击手写画笔后,弹出的模式选择界面,我们可以选择新建画笔,建立一个新的文件;也可以选择打开一个已有的位图进行编辑。右侧的图片为我们新建画笔后输入的内容,默认画笔为最小尺寸,颜色为红色。画笔的颜色和尺寸是可以设置的,按KEY_UP按键,则弹出画笔设置对话框,然后,可以对画笔颜色和画笔尺寸进行设置。如图72.2.10.2和图72.2.10.3所示: 图72.2.10.2中,左侧的图片为按KEY_UP按键后弹出的画笔设置对话框,我们可以选择对画笔颜色和画笔尺寸进行设置。右侧的图片为画笔颜色设置对话框,在该对话框里面,我们可以直接在颜色条快速输入要设置的颜色,也可以通过下方的三个滚动条进行精确设置,左侧的正方形区域为预览区。
图72.2.10.3中,左侧为画笔尺寸设置界面,我们可以通过滚动条设置画笔尺寸,对话框显示了画笔尺寸和对应的预览图。右侧的图片为我们完成的画图文件,在返回主界面(按TPAD)的时候,会提示保存,如图72.2.10.4所示: 上图中,左侧为我们退出时弹出的提示保存对话框,如果选择确定,则新的画图文件将会被保存在TF卡的PAINT文件夹里面,命名方式是以当前系统的时间命名的,如PAINT20220620193550.bmp。
右侧的图片为对打开的位图进行编辑的界面,通过这个功能,我们可以在开发板上实现对一些相片(bmp格式)进行涂鸦。
72.2.11 照相机本照相机支持正点原子OV2640这款200W像素的CMOS摄像头模块,本照相机的特点有: 1,支持BMP拍照(拍下的bmp分辨率为LCD分辨率),按KEY2拍BMP照片。 2,支持JPG拍照(默认是1600*1200像素(UXGA),可按KEY_UP设置拍照分辨率),按KEY0拍JPG照片。 3,屏幕显示可以是全景(缩放)或者1:1显示(无缩放),默认是全景,通过KEY1切换。 4,支持各种参数设置,包括:场景、特效、曝光、亮度、色度和对比度等。
双击主界面的照相机图标,首先初始化OV2640摄像头模块,如图72.2.11.1所示: 图72.2.11.1 初始化OV2640和等待拍照 在初始化OV2640之后,进入等待拍照模式,此时我们可以通过点击屏幕,弹出相机设置对话框,对摄像头的参数进行设置,如图72.2.11.2~72.2.11.5所示: 以上设置,和手机类似,这里就不一一和大家解释了。我们按KEY0按键,即可实现JPG拍照,JPG照片的尺寸,默认是1600*1200分辨率,可通过KEY_UP设置其他分辨率。按KEY2按键即可实现BMP拍照,BMP照片的尺寸就是LCD的分辨率。在照片保存期间LED1亮,保存完后蜂鸣器发出“滴”的一声,提示拍照成功,同时弹出拍照成功对话框,如上图右侧图片所示。
从上图可以看出,照片文件的命名还是以当前时间为名字命名的。我们将所有的照片都保存在TF卡/U盘的PHOTO文件夹。如果你没有插入TF卡/U盘,拍照时会提示“创建文件失败,请检查!”的提示信息。
按KEY1按键,可以实现1:1显示(显示区域小,但是图像无压缩,不变形),或者全尺寸显示(显示整个摄像头拍照区域,但是图像有压缩,会变形)。另外,如果你觉得照片模糊,可以手动调节摄像头模块的镜头,进行调焦,以达到最佳效果。
最后,看看本程序拍到的JPG照片样张,如图72.2.11.6所示: 72.2.12 录音机 综合测试实验带了录音机功能,可以实现通过MIC(咪头)录音,并将录音文件保存在TF卡/U盘。录音文件为WAV文件,格式为:立体声(但是左声道数据=右声道数据)、16位、8Khz~48Khz采样率可设置。
双击主界面的录音机图标,进入录音机主界面,如图72.2.12.1左侧图片所示,该界面显示了当前录音时间以及信号电平等,在该界面有两个按钮:左边的按钮用于开始/暂停录音,右边的按钮用于停止录音,并保存当前录音文件。
录音机功能可以设置采样率和MIC(咪头,这里称之为麦克风)增益,通过点击左下角的选项按钮,弹出录音设置对话框,可以设置采样率和MIC增益,如图72.2.12.1右侧图片所示。 图72.2.12.1 录音机主界面和麦克风增益设置 采样率设置,可以设置录音时的采样率,支持:8Khz、16Khz、32Khz、44.1Khz和48Khz等几种采样率。默认是16Khz。注意:采样率必须在没有开始录音之前进行设置才行,否则会提示:请先停止录音。
MIC增益设置,支持从-12dB~32.25dB的设置范围,以0.75dB步进。默认是22.5dB增益,大家可以根据自己需要设置合适的MIC增益,以达到最好效果。注意:如果外接了喇叭或者音箱,当增益太大的时候,会产生啸叫,这个时候,请将增益设置小一点。
采样率设置和MIC增益设置,如图72.2.12.2所示: 在图72.2.12.3中,左侧的图片为正在录音的界面,此时我们可以按暂停/停止,按停止则自动保存当前录音文件,录音文件同样是以时间命名(见图中上方白字),所有录音文件都是被保存在TF卡/U盘根目录的RECORDER文件夹里面的。在录音的时候,按下TPAD,会提示是否保存,如上图右侧图片所示,我们可以根据需要选择。
72.2.13 USB连接双击主界面的USB连接图标,如果开发板的USB端口没有连接电脑,则显示无连接,如图72.2.13.1所示: 上图中,左侧的图片显示开发板没有和电脑连接上,此时,我们找一根USB线,连接开发板的USB_Slave端口和电脑的USB,然后,可以看到开发板提示USB已连接,并显示USB正在读数据,同时我们在电脑上面,可以看到右下角提示发现新硬件,并自动安装驱动(如果是第一次连接的话),如图72.2.13.2所示: 此时,我们打开我的电脑,即可找到可移动磁盘,如果有TF卡插入,那么会显示2个磁盘:ALIENTEK磁盘和TF卡磁盘。如果TF卡没插入,则只显示ALIENTEK磁盘。这里的ALIENTEK磁盘即开发板板载的SPI FLASH Disk。
这样,我们就实现了开发板和电脑的USB连接,可以直接从电脑拷贝文件到开发板的TF卡和SPI Flash Disk(即25Q128)。
这里再次提醒大家,如非必要,不要往SPI Flash Disk写入数据!否则容易写坏SPI FLASH。
72.2.14网络通信开发板板载了一个10M/100M自适应以太网接口,可以实现网络通信。本系统的网络通信,就是给大家演示开发板的网络通信功能。
本系统自带的网络通信具有如下特点: 1, 使用LWIP作为TCP/IP协议栈。 2, 支持DHCP,当DHCP失败时,使用静态IP(静态IP地址为:192.168.1.30)。 3, 自适应网线(支持交叉和直连网线)。 4, 支持Web Server测试,可通过浏览器,控制开发板的LED和蜂鸣器等。 5, 支持TCP Client、TCP Server和UDP等测试。
特别注意:本测试,必须在开发板网口接入网线,并连接正常后,才可以进行测试。也就是必须用网线连接开发板和电脑/路由器,才可以进行测试,否则,系统会提示网卡初始化失败,从而退出测试!!!
双击主界面的网络通信图标,开始网卡初始化,在网卡初始化成功后,开始DHCP获取IP地址,在DHCP成功后,进入网络通信主界面,如图72.2.14.1所示: 上图中,左侧图片显示正在初始化网卡,此时,我们需要在开发板的网口插入网线,并连接电脑或者路由器。初始化网卡成功后,则开始DHCP获取IP地址: 1,开发板连接到路由器,此种方式,DHCP一般可以成功获取IP地址。 2,如果是直接连接电脑,那么DHCP肯定失败,最终会使用静态IP地址:192.168.1.30,此时需要设置电脑IP地址为192.168.1.XXX,其中XXX可以由用户自己随意设置(但是不能是1和30)。
这里我们以连接路由器为例,DHCP获取成功后,进入网络通信主界面,如图72.2.14.1右侧图片所示,该界面显示了开发板网卡的详细设置和参数,包括:本机MAC地址、本机IP地址(DHCP获取)、子网掩码、网关和网速等。
能进入网络通信主界面,说明开发板与路由器的连接已经正常了,可以在电脑端ping屏幕显示的IP地址,即可查看网络是否连接正常,如图72.2.14.2所示: 图72.2.14.2 ping 192.168.1.100成功 从上图可以看出,ping开发板IP地址是成功的,说明网络连接正常了。然后在浏览器输入开发板的IP地址,即可登录Web Server的主界面,如图72.2.14.3所示:
在上图所示的Web Server主界面,可以实现对开发板LED和蜂鸣器的控制,以及读取ADC1通道5的值、温度传感器值、RTC时间和日期等。特别注意:ADC1_CH5所在通道刚好是TPAD的输入通道,所以,本测试读取ADC1_CH5的电压值,是不正确的,因为IO被TPAD占用了!!!如需要正确读取,请参考LWIP开发指南.pdf。
点击图72.2.14.1右侧图片所示的开始测试,即可进入:TCP Server、TCP Client和UDP的测试界面,如图72.2.14.4所示: 图72.2.14.4 TCP&UDP测试界面和协议选择 从图72.2.14.4左侧图片可以看出:最顶部,显示了TCP Server的本机IP地址和端口号,其中IP地址是白色,表示不可以设置;端口号是绿色,表示可以设置,设办法:触摸点击该区域,看到光标闪烁后,即可输入数字进行设置。随后,显示TX,RX,和协议等三个信息,分别代表发送接收的数据量,和当前所使用的协议类型。
然后就是一个接收区和发送区,分别用于显示接收到的数据,和发送的数据。这个同电脑端的网络调试助手一样。右边的协议选择按钮,可以选择不同协议(如图72.2.14.4右侧图片所示),该选择按钮只有在连接断开的时候,才有效。连接按钮,用于启动连接(TCP Server/TCP Client和UDP等),连接结果会有对话框提示(成功或者失败)。清除接收按钮,则可以清除接收区的所有数据,同时清除RX和TX计数器。发送按钮,则用于发送数据,每按一次,发送区的数据就发送一次。
进入TCP&UDP测试后,协议默认选择的是TCP Server,可以通过协议选择按钮,选择不同协议(TCP Server、TCP Client和UDP),如上图右侧图片所示。
我们使用默认的TCP Server端口号(8088),然后点击链接,提示:连接成功后,即可开启开发板的TCP Server服务,然后在电脑端,打开网络调试助手,设置正确的网络参数后(如不懂设置方法,请参考《LWIP开发指南》对应测试部分,下同!!),即可连接上开发板的TCP Server,并互相通信,如图72.2.14.5所示: 图72.2.14.5 TCP Server测试和TCP Client参数设置 上图中,左侧图片为TCP Server测试界面,可以看到,我们收到来自电脑的数据,接收数据时,首先会在接收区提示收到的数据来自何处(即电脑端的IP地址,本例可以看出,电脑IP地址为:192.168.1.114),随后才是电脑端发送过来的数据。同时,我们也发送了一些数据给电脑(电脑端网络调试助手可以看到,这里就不截图出来了)。此时,协议选择按钮变为了灰色,处于无效状态。只有在断开连接后,才可以选择新的协议。
TCPClient的测试如图72.2.14.5中右侧图片所示,我们选择了TCP Client协议之后,顶部IP变为了目标IP,也就是TCP Client要连接的IP地址,我们可以根据自己需要设置对应的IP地址和端口号。这里,我们设置为:192.168.1.114,端口为:8087。注意:这里的IP和端口号,要根据自己电脑的实际情况修改。随后需要在电脑端开启网络调试助手,并设置正确的网络参数(主要是端口号和IP地址),然后开启TCP Server服务。
TCPClient测试必须等电脑端TCP Server服务开启后,我们才可以在开发板点击连接,并连接成功,否则肯定是连接失败的。连接成功后,TCP Client的测试如图72.2.14.6所示: 图72.2.14.6 TCP Client测试和UDP测试 上图中,左侧为TCP Client测试界面,右侧为UDP测试界面,这两个测试界面和TCP Server差不多,请参考前面的介绍。
UDP的测试,同TCP Client基本一样,也是先设置目标IP和端口号,然后按连接,进行测试。UDP测试的时候,一般需要开发板先发送一次数据给电脑端的网络调试助手,随后才可以实现数据互发。UDP测试界面如图72.2.14.6右侧图片所示。 注意:UDP不是基于可靠连接的通信,所以程序提示连接成功的时候,仅仅是个提示作用,并不是说就一定连接上了目标IP和端口号,因此,不一定能成功发送数据给对方,这个在使用的时候,要注意。
网络通信就为大家介绍到这里。
72.2.15 无线传书 该功能用来实现两个开发板之间的无线数据传输,在开发板A输入的内容,会在开发板B上完整的“复制”一份,该功能需要2个探索者V3开发板(也可以一个探索者板与战舰板或精英板或 Mini板搭配用,不过都要刷综合实验!!)和2个NRF24L01无线模块。 双击主界面的无线传书图标(假定开发板已插上NRF24L01无线模块),会先弹出模式选择对话框,如图 72.2.15.1 所示: 从左侧的图片可以看出,模式设置,我们可以设置为发送模式或接收模式。右侧的图片则是选择发送模式后进入的界面。我们在另外一块开发板(开发板B)设置模式为接收模式,然后在本开发板(开发板A)手写输入一些内容,就可以看到在另外一个开发板也出现了同样的内容,如图 72.2.15.2 所示: 图72.2.15.2 在开发板A输入的内容完整的显示在开发板B上 从上图可以看出,在开发板A上输入的内容,被完整的复制到开发板B上了。这就是无线传书功能。
72.2.16计算器本开发板实现了一个简单的科学计算器,可以计算加减乘除、开方、平方、M^N次方、正弦、余弦、正切、对数、倒数、格式转换等一些常见的计算器功能,精度为12位,支持科学计数法表示。双击主界面的计算器图标,进入计算器主界面,如图72.2.16.1所示: 上图中,左侧的图片为科学计算器的主界面,和我们手机用的计算器基本一样,使用上非常简单,我们就不详细介绍了。右侧的图片为加法计算,支持累加功能。 上图为乘法计算和倒数计算,可以看到,结果是以科学计数法表示的,最大支持200位指数表示,超过范围直接显示错误(E)。
该计算器还支持格式转换(按FMT键),可以将十进制数据(最大为65535,超过部分将被丢弃)转换为16进制/二进制数据表示,如图72.2.7.3所示: 上图显示我们将十进制的65535转换为16进制/二进制后的表示。计算器的其他功能,我们就再列举了,感兴趣的朋友可以慢慢摸索,当然也可以在这个基础上进行改进。通过按TPAD可以返回主界面。
72.2.17 拨号 本综合实验支持拨打和接听电话,不过需要正点原子 ATK-GM510/ATK-GM196模块的支持,所以本功能的测试,请先确保有4G模块,并连接成功(详见72.2节开头部分)。 双击主界面的拨号图标,进入拨号界面,如图72.2.17.1所示: 上图中左侧图片就是拨号主界面,这个和手机拨号是一样的。右侧是我们输入的拨号号码,点击拨号图标,即可进行拨号。如图72.2.17.2所示。 图72.2.17.2为拨号和拨通后的通话界面。图72.2.17.3为来电和接听来电后的通话界面,此时蜂鸣器会发出“滴、滴”的提示声,提示有电话呼入。其他的操作和我们智能手机基本一模一样,就无需多说了。
注意,在通话状态,如果按TPAD,则会挂断电话,结束通话。 72.2.18 应用中心 双击主界面的应用中心图标,进入应用中心界面,如图72.2.18.1所示: 左侧图片是我们刚进入应用中心看到的界面,在该界面下总共有16个图标,我们仅实现了前五个功能:红外遥控、蜂鸣器、LED测试、按键测试和指南针。其他都没有实现,大家可以自由发挥,添加属于自己的东西。
双击第一个图标,会弹出一个红外遥控的小窗口,用于接收红外信号,此时,我们将红外遥控对准开发板的红外接收头,并按下按钮,就可以在红外遥控窗口里面显示键值、按键次数、符号等信息。如图72.2.18.1右侧图片所示。
按TPAD可以退出红外遥控功能,返回应用中心主界面,然后按第二个图标,即可进入蜂鸣器测试界面。蜂鸣器功能用于测试蜂鸣器,通过触摸屏来控制蜂鸣器响或不响。
进入蜂鸣器测试窗口后,就可以通过点击显示屏的“打开”按钮,让蜂鸣器响。此时“打开”按钮变成“关闭”按钮,之后点击“关闭”按钮则会关闭蜂鸣器,“关闭”按钮又会变成“打开”按钮,如图72.2.18.2所示: 按TPAD,则会退出蜂鸣器测试功能,回到应用中心主界面。然后按第三个图标,即可进入LED测试界面。LED测试功能用于测试板载的LED灯,通过触摸屏来控制LED灯的亮灭。
进入LED测试窗口后,默认LED灯全部熄灭,显示屏的两个实心圆显示白色,如图72.2.18.3左侧图所示: 图72.2.18.3 默认没有按键按下和按下DS0亮按键 我们可以通过点击显示屏的“DS0亮”和“DS1亮”这2个按钮,来控制板载LED灯亮。比如点击“DS0亮”按钮,那么DS0对应的实心圆就变成红色,如图72.2.18.1右侧图所示,此时LED0红灯也会亮。LED1灯的控制方法类似的。
按TPAD,则会退出LED测试功能,回到应用中心主界面。然后按第四个图标,即可进入按键测试界面。按键测试功能用于测试板载的四个功能按键。
进入按键测试窗口后,此时,如果没有任何按键被按键,默认显示屏上显示四个黄色的实心圆(KEYUP、KEY2、KEY1、KEY0),如图72.2.18.4左侧图所示: 图72.2.18.4 默认没有按键按下和按下KEY1按键 当我们按下其中一个按键,则对应的实心圆会显示红色,比如按下按键KEY1,显示屏的实心圆KEY1变红色,如图72.2.18.4所示,此后松开KEY1按键,该实心圆又变回黄色。注意:当有两个或两个以上按键被同时按下,只有其中一个有效。
按TPAD,则会退出按键测试功能,回到应用中心主界面。然后按第五个图标,即可进入指南针界面。指南针功能用于帮助辨别方向。
进入指南针窗口后,此时,显示屏上显示一个电子罗盘并显示当前指向,如图72.2.18.5所示:
这里的指南针就是通过开发板板载的ST480MC传感器实现。 按下KEY_UP按键可进行校准,校准后偏差会比较小。
按TPAD,则会退出指南针功能,回到应用中心主界面,再按一次TPAD就可以返回主界面。
72.2.19电压表电压表功能用于测量0~3.3V的直流电压源,可以是开发板上的电压源,也可以是外部的,但是电压的范围一定要是0~3.3V,否则容易烧毁STM32芯片。
下面我们一起来测量板载的可调电位器的电压,双击主界面的电压表图标,屏幕会弹出提示对话框,如图72.2.19.1所示: 提示信息告诉我们,需要使用短路帽将多功能端口P11的DAC和RV1排针连接。
进入电压表功能后,就可以通过调节可调点位旋钮改变接入ADC的电压,从而在屏幕上显示不同的电压值,如图72.2.19.2左侧图所示: 图72.2.19.2 调节电位器得到不同电压和最大允许接入3.3V电压 上图中,ADC值是电压的数字值,Uin值是经过转换后的实际电压。由于STM32F103的ADC最大分辨率是12位,所以电压的数字值范围是0~4095。
当我们把可调电压值调至最大,就可以得到3.3V的最大输入电压,如图72.2.19.2右侧图所示。电压的数字值是4095,对应的实际电压是3.3V。
至此,开发板的综合测试实验就介绍完了。其中,参考了不少网友的代码,对这些网友表示衷心的感谢,同时我也希望我们的这个代码,可以让大家有所受益,能开发出更强更好的产品。
综合实验整个代码编译后大小为587K左右(-O2优化后),代码量是非常的大,希望大家慢慢理解,各个攻破,最后祝大家身体健康、学习进步! |