嵌入式实验报告.doc_第1页
嵌入式实验报告.doc_第2页
嵌入式实验报告.doc_第3页
嵌入式实验报告.doc_第4页
嵌入式实验报告.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录目录 实验一实验一 跑马灯实验跑马灯实验 1 实验二实验二 按键输入实验按键输入实验 3 实验三实验三 串口实验串口实验 5 实验四实验四 外部中断实验外部中断实验 8 实验五实验五 独立看门狗实验独立看门狗实验 11 实验七实验七 定时器中断实验定时器中断实验 13 实验十三实验十三 ADCADC 实验实验 15 实验十五实验十五 DMADMA 实验实验 17 实验十六实验十六 I2CI2C 实验实验 21 实验十七实验十七 SPISPI 实验实验 24 实验二十一实验二十一 红外遥控实验红外遥控实验 27 实验二十二实验二十二 DS18B20DS18B20 实验实验 30 1 实验一实验一 跑马灯实验跑马灯实验 一 实验一 实验简介简介 我的第一个实验 跑马灯实验 二 实验目的二 实验目的 掌握 STM32 开发环境 掌握从无到有的构建工程 三 实验内容三 实验内容 熟悉 MDK KEIL 开发环境 构建基于固件库的工程 编写代码实现跑马灯工程 通过 ISP 下载代码到实验板 查看运行结果 使用 JLINK 下载代码到目标板 查看运行结果 使用 JLINK 在线调试 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 五 实验步骤五 实验步骤 1 熟悉MDK KEIL 开发环境 2 熟悉串口编程软件 ISP 3 查看固件库结构和文件 4 建立工程目录 复制库文件 5 建立和配置工程 6 编写代码 7 编译代码 8 使用 ISP 下载到实验板 9 测试运行结果 10 使用 JLINK 下载到实验板 11 单步调试 12 记录实验过程 撰写实验报告 2 六 实验结果及测试六 实验结果及测试 源代码 两个灯 LED0 与 LED1 实现交替闪烁的类跑马灯效果 每 300ms 闪烁一次 七 实验总结七 实验总结 通过本次次实验我了解了STM32开发板的基本使用 初次接触这个开发板和MDK KEILC 软件 对软件操作不太了解 通过这次实验了解并熟练地使用MDK KEIL软件 用这个 软件来编程和完成一些功能的实现 作为 STM32 的入门第一个例子 详细介绍了 STM32 的IO口操作 同时巩固了前面的学习 并进一步介绍了MDK的软件仿真功能 3 实验二实验二 按键输入实验按键输入实验 一 实验简介一 实验简介 在实验一的基础上 使用按键控制流水灯速度 及使用按键控制流水灯流水方向 二 实验目的二 实验目的 熟练使用库函数操作 GPIO 掌握中断配置和中断服务程序编写方法 掌握通过全局变量 在中断服务程序和主程序间通信的方法 三 实验内容三 实验内容 实现初始化 GPIO 并配置中断 在中断服务程序中通过修改全局变量 达到控制流水灯 速度及方向 使用 JLINK 下载代码到目标板 查看运行结果 使用 JLINK 在线调试 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 示波器 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 五 实验步骤五 实验步骤 1 在实验 1 代码的基础上 编写中断初始化代码 2 在主程序中声明全局变量 用于和中断服务程序通信 编写完成主程序 3 编写中断服务程序 4 编译代码 使用 JLINK 下载到实验板 5 单步调试 6 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 4 源代码 我们将通过 MiniSTM32 板上载有的 3 个按钮 来控制板上的 2 个 LED 其中 KEY0 控 制 LED0 按一次亮 再按一次 就灭 KEY1 控制 LED1 效果同 KEY0 KEY 2 KEY UP 同时控制 LED0 和 LED1 按一次 他们的状态就翻转一 次 七 实验总结七 实验总结 通过本次实验 我学会了如何使用 STM32 的 IO 口作为输入用 TM32 的 IO 口做输入 使用的时候 是通过读取 IDR 的内容来读取 IO 口的状态的 这里需要注意的是 KEY0 和 KEY1 是低电平有效的 而 WK UP 是高电平有效的 而且要确认 WK UP 按钮与 DS18B20 的连接是否已经断开 要先断开 否则 DS18B20 会干扰 WK UP 按键 并且 KEY0 和 KEY1 连接在与 JTAG 相关的 IO 口上 所以在软件编写的时候要先禁用 JTAG 功能 才能把这两个 IO 口当成普通 IO 口使用 5 实验三实验三 串口实验串口实验 一 实验简介一 实验简介 编写代码实现串口发送和接收 将通过串口发送来的数据回送回去 二 实验目的二 实验目的 掌握 STM32 基本串口编程 进一步学习中断处理 三 实验内容三 实验内容 编写主程序 初始化串口 1 设置波特率为 9600 无校验 数据位 8 位 停止位 1 位 编写中断服务程序代码实现将发送过来的数据回送 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 示波器 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 编写串口初始化代码 2 编写中断服务程序代码 3 编译代码 使用 JLINK 或 ISP 下载到实验板 4 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 6 源代码 把代码下载到 MiniSTM32 开发板 可以看到板子上的 LED0 开始闪烁 说明程序已经 在跑了 接着我们打开串口调试助手 看到如下信息 证明串口数据发送没问题 接着 我们在发送区输入上面的文字 输入完后按回车键 7 然后单击发送 可以得到如下结果 七 实验总结七 实验总结 通过本次实验 我进一步了解了串口的使用 学会了通过串口发送和接收数据 将通过 串口发送来的数据回送回去 该实验的硬件配置不同于前两个实验 串口 1 与 USB 串 口默认是分开的 并没有在 PCB 上连接在一起 需要通过跳线帽来连接一下 这里我们 把 P4 的 RXD 和 TXD 用跳线帽与 P3 的 PA9 和 PA10 连接起来 8 实验四实验四 外部中断实验外部中断实验 一 实验简介一 实验简介 STM32 的 IO 口在本章第一节有详细介绍 而外部中断在第二章也有详细的阐述 这里 我们将介绍如何将这两者结合起来 实现外部中断输入 二 实验目的二 实验目的 进一步掌握串口编程 进一步学习外部中断编程 提高编程能力 三 实验内容三 实验内容 初始化 IO 口的输入 开启复用时钟 设置 IO 与中断的映射关系 从而开启与 IO 口相对 应的线上中断事件 设置触发条件 配置中断分组 NVIC 并使能中断 编写中断服 务函数 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 示波器 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 编写中断服务程序代码 2 使用 ISP 下载到实验板 3 测试运行结果 4 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 9 源代码 打开串口助手 七 实验总结七 实验总结 首先需要将 IO 设置为中断输入口 1 初始化 IO 口为输入 2 开启 IO 口复用时钟 设置 IO 口与中断线的映射关系 3 开启与该 IO 口相对的线上中断 事件 设置触发条件 4 配置中断分组 NVIC 并使能中断 5 编写中断服务函数 10 这一节 使用的是中断来检测按键 通过 WK UP 按键实现按一次 LED0 和 LED 1 同 时翻转 按 KEY0 翻转 LED0 按 KEY1 翻转 LED1 试验中外部中断函数不能进入的原因分析 1 GPIO 或者 AFIO 的时钟没有开启 2 GPIO 和配置的中断线路不匹配 3 中断触发方式和实际不相符合 4 中断处理函数用库函数时 写错 经常可能出现数字和字母之间没有下划线 5 外部中断是沿触发 有可能不能检测到沿 比如 中断线是低电平 浮空输入 触发是下降沿触发 可能会出现一直是低电平 高电平的时候是一样的情况 电平持续为 高电平 6 没有用软件中断来触发外部中断 调用函数 EXTI GenerateSWInterrupt 因为软 件中断先于边沿中断处理 11 实验五实验五 独立看门狗实验独立看门狗实验 一 一 实验简介实验简介 独立看门狗 IWDG 由专用的低速时钟 LSI 驱动 即使主时钟发生故障它也仍然有效 窗 口看门狗由从 APB1 时钟分频后得到的时钟驱动 通过可配置的时间窗口来检测应用程 序非正常的过迟或过早的操作 二 实验目的二 实验目的 通过编程 编写一个独立看门狗驱动程序 三 实验内容三 实验内容 启动 STM32 的独立看门狗 从而使能看门狗 在程序里面必须间隔一定时间喂狗 否 则将导致程序复位 利用这一点 我们本章将通过一个 LED 灯来指示程序是否重启 来验证 STM32 的独立看门狗 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 参考教材独立看门狗部分 编写独立看门狗驱动程序 建立和配置工程 2 编写代码 3 使用 ISP 下载到实验板 4 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 12 源代码 在配置看门狗后 看到 LED0 不停的闪烁 如果 WK UP 按键按下 就喂狗 只要 WK UP 不停的按 看门狗就一直不会产生复位 保持 LED0 的常亮 一旦超过看门狗 定溢出时间 Tout 还没按 那么将会导致程序重启 这将导致 LED0 熄灭一次 七 实验总结七 实验总结 通过本次实验 我掌握了启动独立看门狗的步骤 1 向 IWDG KR 写入 0X5555 2 向 IWDG KR 写入 0XAAAA 3 向 IWDG KR 写入 0XCCCC 通过上面 3 个步骤 启动 STM32 的看门狗 从而使能看门狗 在程序里面就必须间隔 一定时间喂狗 否则将导致程序复位 利用这一点 本章通过一个 LED 灯来指示程序是 否重启 来验证 STM32 的独立看门狗 在配置看门狗后 LED0 将常亮 如果 WK UP 按键按下 就喂狗 只要 WK UP 不停的按 看门狗就一直不会产生复位 保 持 LED 0 的常亮 一旦超过看门狗溢出时间 Tout 还没按 那么将会导致程序重启 这将导致 LED 0 熄灭一次 13 实验七实验七 定时器中断实验定时器中断实验 一 一 实验简介实验简介 STM32 的定时器是一个通过可编程预分频器 PSC 驱动的 16 位自动装载计数器 CNT 构成 STM32 的通用定时器可以被用于 测量输入信号的脉冲长度 输入捕获 或者产生输出波形 输出比较和 PWM 等 使用定时器预分频器和 RCC 时钟控制器预分 频器 脉冲长度和波形周期可以在几微秒到几毫秒间调整 STM32 的每个通用定时器都 是完全独立的 没有互相共享的任何资源 二 实验目的二 实验目的 熟练掌握定时器中断 学会对定时器中断的编程操作 三 实验内容三 实验内容 使用定时器产生中断 然后在中断服务函数里面翻转 LED1 上的电平 来指示定时器中 断的产生 修改中断时间 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 参考教材定时器中断部分 编写定时器中断的驱动程序 2 编写主程序 3 编译代码 使用 JLINK 或 ISP 下载到实验板 4 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 14 源代码 七 实验总结七 实验总结 通过本次实验 认识到时间中断来控制 LED 灯的闪烁 同时也可以将时间中断应用到控 制其他的程序块 以 TIME3 为例产生中断的步骤为 1 TIM3 时钟使能 2 设置 TIM3 ARR 和 TIM3 PSC 的值 3 设置 TIM3 DIER 允许更新中断 4 允许 TIM3 工作 5 TIM3 中断分组设置 6 编写中断服务函数 在中断产生后 通过状态寄存器的值来判断此次产生的中断属于什么类型 然后执行相 关的操作 我们这里使用的是更新 溢出 中断 所以在状态寄存器 SR 的最低位 在 处理完中断之后应该向 TIM3 SR 的最低位写 0 来清除该中断标志 15 实验十三实验十三 ADCADC 实验实验 一 实验简介一 实验简介 通过 DAC 将 STM32 系统的数字量转换为模拟量 使用 ADC 将模拟量转换为数字量 二 实验目的二 实验目的 掌握 DAC 和 ADC 编程 三 实验内容三 实验内容 编写代码实现简单的 DAC 单次发送 编写代码实现 ADC 采集 DAC 发送的数据 并发送到串口 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 编写主程序 2 编译代码 使用 JLINK 或 ISP 下载到实验板 使用串口调试助手观察数据 3 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 源代码 16 七 实验总结七 实验总结 本节将利用 STM32 的 ADC1 通道 0 来采样外部电压值 并在串口调试助手中显示出 来 步骤如下 1 开启 PA 口时钟 设置 PA0 为模拟输入 2 使能 ADC1 时钟 并设置分频因子 3 设置 ADC1 的工作模式 4 设置 ADC1 规则序列的相关信息 5 开启 AD 转换器 并校准 6 读取 ADC 值 在上面的校准完成之后 ADC 就算准备好了 接下来我们要做的就是设置规则序列 0 里面的通道 然后启动 ADC 转换 在转换结束后 读取 ADC1 DR 里面的值 通过以上几个步骤的设置 可以正常的使用 STM32 的 ADC1 来执行 AD 转换操作 通过本次实验的学习 我们了解了STM32 ADC的使用 但这仅仅是STM32强大的ADC 功能的一小点应用 STM32 的ADC 在很多地方都可以用到 其ADC 的DMA 功能是很 不错的 17 实验十五实验十五 DMADMA 实验实验 一 一 实验简介实验简介 直接存储器存取 DMA 用来提供在外设和存储器之间或者存储器和存储器之间的高速数 据传输 无须 CPU 干预 数据可以通过 DMA 快速地移动 这就节省了 CPU 的资源来做 其他操作 二 实验目的二 实验目的 熟练掌握 DMA 编程 学会对 EPC02 的读写操作 学习双缓冲兵乓操作 理解互斥资源 提高编程能力 三 实验内容三 实验内容 利用外部按键KEY0 来控制DMA 的传送 每按一次KEY0 DMA 就传送一次数据 到USART1 然后在串口调试助手观察进度等信息 LED0 还是用来做为程序运行的指示 灯 这里我们使用到的硬件资源如下 1 按键KEY0 2 指示灯LED0 3 使用串口调试助手观察数据 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 网络调试助手 五 实验步骤五 实验步骤 1 编写主程序 2 编译代码 使用 JLINK 或 ISP 下载到实验板 使用串口调试助手观察数据 3 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 18 源代码 19 伴随 LED0 的不停闪烁 提示程序在运行 我们打开串口调试助手 然后按 KEY0 可 以看到串口显示如下内容 七 实验总结七 实验总结 本节利用 STM32 的 DMA 来实现串口数据传送 DMA 通道的配置需要 1 设置外设地址 2 设置存储器地址 20 3 设置传输数据量 4 设置通道 4 的配置信息 5 使能 DMA1 通道 4 启动传输 通过以上 5 步设置 我们就可以启动一次 USART1 的 DMA 传输了 DMA 控制器对 DMA 请求判别优先级及屏蔽 向总线裁决逻辑提出总线请求 当 CPU 执行完当前总线周期即可释放总线控制权 此时 总线裁决逻辑输出总线应答 表示 DMA 已经响应 通过 DMA 控制器通知 I O 接口开始 DMA 传输 DMA 控制器获得总线控制权后 CPU 即刻挂起或只执行内部操作 由 DMA 控制器输出 读写命令 直接控制 RAM 与 I O 接口进行 DMA 传输 在 DMA 控制器的控制下 在存储器和外部设备之间直接进行数据传送 在传送过中不 需要中央处理器的参与 开始时需提供要传送的数据的起始位置和数据长度 当完成规定的成批数据传送后 DMA 控制器即释放总线控制权 并向 I O 接口发出结束 信号 当 I O 接口收到结束信号后 一方面停 止 I O 设备的工作 另一方面向 CPU 提出 中断请求 使 CPU 从不介入的状态解脱 并执行一段检查本次 DMA 传输操作正确性的 代码 最后 带着本次操作结果及状态继续执行原来的程序 由此可见 DMA 传输方式无需 CPU 直接控制传输 也没有中断处理方式那样保留现场 和恢复现场的过程 通过硬件为 RAM 与 I O 设备开辟一条直接传送数据的通路 使 CPU 的效率大为提高 21 实验十六实验十六 I2CI2C 实验实验 一 实验简介一 实验简介 编程实现对使用 I2C 接口的 EPC02 芯片进行写和读操作 二 实验目的二 实验目的 熟练掌握 I2C 编程 学会对 EPC02 的读写操作 三 实验内容三 实验内容 编写 I2C 驱动程序 使用驱动程序初始化 EPC02 判断设备正确性 写 256 个 0 x5A 到 EPC02 读出并发送给串口 通过串口调试助手判别是否读到的都是 0 x5A 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 参考教材 I2C 部分 编写 I2C 驱动程序 2 编写主程序 3 编译代码 使用 JLINK 或 ISP 下载到实验板 4 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 22 伴随 LED0 的不停闪烁 提示程序在运行 我们先按下KEY0 可以看到如下所示的内 容 证明数据已经被写入到24C02了 接着我们按 KEY2 可以看我们刚刚写入的数据被显示出来了 如下图所示 23 源代码 七 实验总结七 实验总结 IIC 是由数据线 SDA 和时钟 SCL 构成的串行总线 可发送和接收数据 在 CPU 与被 控 IC 之间 IC 与 IC 之间进行双向传送 高速 IIC 总线一般可达 400kbps 以上 IIC 总线在传送数据过程中共有三种类型信号 它们分别是 开始信号 结束信号和应答 信号 这些信号中 起始信号是必需的 结束信号和应答信号 都可以不要 程序在开机的时候会检测 24C02 是否存在 如果不存在则会在 TFTLCD 模块上显示错 误信息 同时 LED0 慢闪 大家可以通过跳线帽把 PC11 和 PC12 短接就可以看到报错 了 通过本次实验 我掌握了如何使用 IIC 写入与读出数据 学习了编写 I2C 驱动程序 使用 驱动程序初始化 EPC02 判断设备正确性 以及如何在助手上显示 24 实验十七实验十七 SPISPI 实验实验 一 实验简介一 实验简介 编程实现对 SPI 接口的 W25Q64 进行读写操作 二 实验目的二 实验目的 熟练掌握 SPI 编程 学会对的 W25Q64 读写操作 三 实验内容三 实验内容 1 编写 SPI 驱动程序 2 初始化 SPI 接口 3 读取 SPIFLASH 的 ID 如果正确继续 否则报错 4 向 SPIFALSH 地址 0 x12AB00 开始写一串字符 再读出比较判断是否与写入的一致 5 向 SPIFALSH 地址 0 x12AB00 开始写连续 256 个字节的 0 x5A 然后读出并发送给串 口 通过串口调试助手判别是否读到的都是 0 x5A 四 实验设备四 实验设备 硬件部分 PC 计算机 宿主机 亮点 STM32 实验板 JLINK 软件部分 PC 机 WINDOWS 系统 MDK KEIL 软件 ISP 软件 串口调试助手 五 实验步骤五 实验步骤 1 参考 SPI 及 SPI FLASH 部分 编写 SPI 及 SPI FLASH 驱动程序 可参考书上代码 2 编写主程序 3 编译代码 使用 JLINK 或 ISP 下载到实验板 4 记录实验过程 撰写实验报告 六 实验结果及测试六 实验结果及测试 25 源代码 伴随 LED0 的不停闪烁 提示程序在运行 我们先按下KEY0 可以看到如图13 17 4 2 所示的内容 证明数据已经被写入到W25X16了 26 接着我们按KEY2 可以看我们刚刚写入的数据被显示出来了 如下图所示 七 实验总结七 实验总结 SPI 接口主要应用在 EEPROM FLASH 实时时钟 AD 转换器 还有数字信号处理 器和数字信号解码器之间 SPI 是一种高速的 全双工 同步的通信总线 并且在芯片 的管脚上只占用四根线 节约了芯片的管脚 同时为 PCB 的布局上节省空间 提供方 便 正是出于这种简单易用的特性 现在越来越多的芯片集成了这种通信协议 STM32 也有 SPI 接口 SPI 的设置步骤 1 配置相关引脚的复用功能 使能 SPI 时钟 2 设置 SPI 工作模式 3 使能 SPI 程序在开机的时候会检测 W25X16 是否存在 如果不存在则会在TFTLCD 模块上显示 错误信息 同时LED0 慢闪 大家可以通过跳线帽把PA5 和PA6 短接就可以看到报错了 通过本实验 我掌握了编写 SPI 程序写入和读取 FLASH 的方法 掌握了对学会对的 W25Q64 读写操作 对 STM32 开发板有了进一步的了解 27 实验二十一实验二十一 红外遥控实验红外遥控实验 一 一 实验简介实验简介 编程实现通过在 ALIENTEK MiniSTM32 开发板上实现红外遥控器的控制 二 实验目的二 实验目的 掌握编程实现红外遥控控制开发板的方法 三 实验内容

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论