当前位置:文档之家› 基于STM32的嵌入式系统设计实验实验教案汇总

基于STM32的嵌入式系统设计实验实验教案汇总

实验教学教案汇总课程名称基于STM32的嵌入式系统设计实验目录目录 (2)《实验一电路板焊接与调试》教案 (3)《实验二流水灯和按键实验》教案 (6)《实验三串口发送和接收实验》教案 (9)《实验四串口DMA双缓冲实验》教案 (11)《实验五I2C实验》教案 (14)《实验六SPI FLASH实验》教案 (16)《实验七TF卡编程实验》教案 (19)《实验八TF卡FAT32实验》教案 (22)《实验九网络PING实验》教案 (24)《实验十网络TCP/IP通信实验》教案 (27)《实验十一DAC单次发送实验》教案 (29)《实验十二使用DAC实现波形发生器实验》教案 (31)《实验十三AD采集实验》教案 (33)《实验十四AD波形DMA连续采集》教案 (35)《实验一 电路板焊接与调试》教案一、实验教学目的掌握STM32F103实验板的电路的基本原理,掌握焊接电路板的基本技能。

二、实验教学原理及要求.原理MCU 和周边电路如图为MCU 及其周边电路。

图1 MCU 及其周边电路3.启动配置 2.复位电路 1.唤醒电路4.高速晶振电路 7.AD 输入 8.低速晶振电路5.AD 参考电路6.后备电池1.唤醒电路,高有效,不按时接220K电阻下拉。

2.复位电路,低有效。

带RC启动复位。

3.配置启动,用跳线选择BOOT1和BOOT0接高电平或低电平。

4.高速晶振电路,采用8M晶振,在STM32内部倍频为72M。

5.AD参考电路,采用LC滤波,可跳线选择直接接VCC或通过TL431稳压电路产生的参考电压。

6.后备电池。

可通过跳线选择直接接VCC或电池。

7.AD输入,可选择使用RC滤波,共8路。

8.低速晶振电路,选用32.768kHz晶振,为产生准确的串口波特率。

USB转串口电路USB转串口电路可以方便没有串口的笔记本电脑用户通过USB接口下载代码到FLASH中,及进行RS232串行通信。

图2 USB转串口接口电路USB转串口芯片是CP2102,该芯片稳定性较好。

当其正常工作的时候,灯LED6亮。

该芯片DP/D+引脚连MINI USB接口的脚3,DM/D-引脚连MINI USB接口的脚2,为一对USB输入输出线。

TXD与RXD引脚接MCU的PA10(USART1_RX)和PA9(USART1_TX)。

I2C接口电路本书选择的EEPROM是AT24C02是256字节的电可擦出PROM,通过I2C协议与STM32进行通信,连接十分简单。

EEPROM虽然容量只有256字节,但是读写比较方便,与MCU连线少,被广泛的使用在智能仪器、汽车电子、工业控制、家用电器等场合。

实例中使用AT24C02存储屏幕是否校准过及屏幕各个角的模拟值等。

图3 I2C接口电路A2、A1、A0为做级联时使用,这里只有1片24C02,接地即可。

WP为写保护,不保护的时候接地。

SCL为I2C时钟,SDA为I2C数据,因开漏输出,需外部接上拉电阻上拉。

要求要求在掌握电路原理的基础上进行电路板的焊接,要求能够焊接贴片0602电阻电容,能够焊接SOIC贴片芯片。

在完成后可进行上电,下载代码运行测试验证电路板焊接的正确性。

三、实验重点及难点重点:焊接技术,贴片芯片焊接难点:SOIC贴片芯片焊接四、实验学时安排4个学时五、实验操作注意事项注意电源的供电安全,注意电烙铁的使用安全《实验二流水灯和按键实验》教案二、实验教学目的掌握FSMC接口和编程,掌握RA8875原理和编程,通过RA8875控制液晶屏英文、字符、图形显示,掌握控制液晶背光亮度调节。

通过本实验可掌握基本的图形液晶屏控制和显示。

二、实验教学原理及要求输入输出端口GPIOGPIO是常规输入输出端口,STM32F103VE有PA、PB、PC、PD、PE共5个16位的GPIO。

STM32的GPIO都是可编程的,具有很多复用功能。

从图1.7.1可见,通过对输出控及肖特基触发器及各个开关的控制,可以选择使用GPIO功能或复用功能。

当听过编程,将输出控制设置为选择复用功能的时候,就从来自片上外设的复用功能输出端采集数据,反之采集输出数据寄存器上的数据。

在GPIO方式下也可以配置为很多种模式,这和51单片机是有明显的区别,功能性强了很多。

这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。

在默认的模式下为输入浮空。

每个I/O端口可以通过对GPIO寄存器写操作来编程成一种模式,GPIO寄存器包括端口配置低寄存器GPIOx_CRL、端口配置高寄存器GPIOx_CRH、端口输入寄存器GPIOx_IDR、端口输出寄存器GPIOx_ODR、端口位设置清除寄存器GPIOx_BSRR、端口为清除寄存器GPIOx_BRR、端口锁定寄存器GPIOx_LCKR。

所有x的范围为(A-E)。

80个GPIO分为5组,A-E就是分组号。

例如,GPIOB_CRL就是B组GPIO的端口配置低寄存器,GPIOC_CRL就是C组GPIO的端口配置低寄存器。

构建工程如图所示:图1:工程文件固件库构建过程:在D盘建立一个目录,在其下建立一个子目录firstpeoject作为工作目录。

然后,又在其下建立了一些子目录。

当然,使用的工具就是WINDOWS资源管理器。

这个目录可以放在任何一个盘或目录里,没有限制。

现在开始拷贝文件。

1)拷贝内核文件和驱动支持文件、启动文件将固件库Libraries\CMSIS\CM3\CoreSupport目录下的两个文件core_cm3.c和core_cm3.h文件拷贝到刚刚创建的stm32lib\m3子目录中。

将固件库Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h也拷贝到stm32lib\m3子目录中。

将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的启动代码也拷贝到application子目录中。

启动文件有好几个,笔者的STM32硬件芯片是STM32F103VET6,是属于高密度的芯片,因此应该拷贝startup_stm32f10x_hd.s。

启动开发,启动文件startup_stm32f10x_hd.s是程序开始的地方。

2)接下来拷贝设备驱动程序。

将Libraries\STM32F10x_StdPeriph_Driver\inc目录下的所有文件拷贝到stm32lib\inc目录下。

将Libraries\STM32F10x_StdPeriph_Driver\src目录下的所有文件拷贝到stm32lib\src目录下。

3)拷贝外设中断函数文件和固件库配置文件拷贝固件库的Project\ STM32F10x_StdPeriph_Templat目录下的文件stm32f10x_it.h、stm32f10x_it.c和stm32f10x_conf.h文件到application子目录中。

目前为止,固件库的搬家工作就算做完了。

接下来要在MDK中去工作了。

过程和代码参考教材3.2(P88-115)要求:参考教材,编写代码下载到目标板,观察效果。

如未达到理想效果,检查和修改代码,再次编译下载直到成功。

使用JLINK在线调试,记录实验过程,完成实验报告。

三、实验重点及难点重点:掌握MDK开发环境,构建工程,编写代码,下载代码难点:构建和设置工程,编写代码四、实验学时安排2个学时五、实验操作注意事项注意电源的供电安全《实验三串口发送和接收实验》教案一、实验教学目的掌握STM32基本串口编程,进一步学习中断处理。

二、实验教学原理及要求STM32的同步异步收发器USART和传统的51单片机或PC即串行口UART稍有区别:通用同步异步收发器(USART)提供了一种灵活的方法与使用异步串行数据格式的外部设备之间进行全双工数据交换。

USART利用分数波特率发生器提供宽范围的波特率选择。

另外,它还允许多处理器通信。

USART也可以使用DMA方式直接将接收的数据存储到内存或从内存中批量发送数据,也支持多种中断方式。

接口通过三个引脚与其他设备连接在一起。

接收数据输入(RX)和发送数据输出(TX)及地(GND)。

如果使用更复杂的功能,如硬件流控制的时候,需要更多的引脚。

RX:接收数据串行输入。

TX:发送数据输出。

串行异步通信USART库函数串行通信库函数在"stm32f10x_usart.h"中声明,在"stm32f10x_usart.c"中实现。

外设库函数文件USART库函数如下表所示:串行异步通信USART库函数一览要求参考教材,编写代码下载到目标板,观察效果。

如未达到理想效果,检查和修改代码,再次编译下载直到成功。

记录实验过程,完成实验报告。

三、实验重点及难点重点:串口配置和驱动,串口发送和接收编程难点:串口中断设置和处理四、实验学时安排2个学时五、实验操作注意事项注意电源的供电安全《实验四串口DMA双缓冲实验》教案一、实验教学目的进一步掌握串口编程,进一步学习DMA编程。

学习使用双缓冲兵乓操作,理解互斥资源。

进一步学习使用DMA和中断,提高编程能力。

二、实验教学原理及要求直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速的无需CPU干预的数据传输。

数据通过DMA快速地移动,例如从串口到内存,当在内存中收到一定数量的数据时才发出一个中断,CPU才放下手头的工作去处理,这就节省了CPU的资源来做其他操作。

STM32有两个DMA控制器,其中DMA1有7个通道,DMA2有5个通道,每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。

另外,还有一个仲裁器来协调各个DMA请求的优先权。

STM32在硬件上设计了这么多的DMA通道是煞费苦心的,用好DMA控制器,可以大大的提高系统的吞吐量。

在PC机上,将硬盘数据复制到内存,就采用DMA 模式,把拷贝数据的任务交给DMA来执行,CPU就可以去做别的事情了。

在STM32下也是如此,在编程中不采用DMA模式,全靠CPU去辛苦劳作,是巨大的损失。

要使用好DMA控制器,首先要了解它。

DMA框图STM32有一大堆的可以使用DMA与内存进行直接交互的外设,但是只有2个DMA控制器。

这就导致,当外设要进行DMA传输的时候,首先要获得批准。

当然,哪几个外设可以使用哪些通道,是预先就设计好了的,在使用哪个通道的问题上就不需要过多考虑,但是编程人员必须认真对待这个问题,否则DMA传输就用不起来。

DMA传输可以从内存到外设,也可以从外设到内存,另外,内存到内存的DMA 传输也是允许的,这个很方便。

相关主题