目录实验一跑马灯实验 (1)实验二按键输入实验 (3)实验三串口实验 (5)实验四外部中断实验 (8)实验五独立看门狗实验 (11)实验七定时器中断实验 (13)实验十三ADC实验 (15)实验十五DMA实验 (17)实验十六I2C实验 (21)实验十七SPI实验 (24)实验二十一红外遥控实验 (27)实验二十二DS18B20实验 (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。
二.实验目的掌握STM32开发环境,掌握从无到有的构建工程。
三.实验内容熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。
通过ISP 下载代码到实验板,查看运行结果。
使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6.编写代码7.编译代码8.使用ISP下载到实验板9.测试运行结果10.使用JLINK下载到实验板11.单步调试12.记录实验过程,撰写实验报告六.实验结果及测试源代码:两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。
七.实验总结通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDK KEILC 软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDK KEIL软件,用这个软件来编程和完成一些功能的实现。
作为STM32 的入门第一个例子,详细介绍了STM32 的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。
实验二按键输入实验一.实验简介在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。
二.实验目的熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。
三.实验内容实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。
使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1在实验1代码的基础上,编写中断初始化代码2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序3编写中断服务程序4编译代码,使用JLINK下载到实验板5.单步调试6记录实验过程,撰写实验报告六.实验结果及测试源代码:我们将通过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 口使用。
实验三串口实验一.实验简介编写代码实现串口发送和接收,将通过串口发送来的数据回送回去。
二.实验目的掌握STM32基本串口编程,进一步学习中断处理。
三.实验内容编写主程序,初始化串口1,设置波特率为9600,无校验,数据位8位,停止位1位。
编写中断服务程序代码实现将发送过来的数据回送。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。
五.实验步骤1编写串口初始化代码2编写中断服务程序代码3编译代码,使用JLINK或ISP下载到实验板4记录实验过程,撰写实验报告六.实验结果及测试源代码:把代码下载到MiniSTM32 开发板,可以看到板子上的LED0 开始闪烁,说明程序已经在跑了。
接着我们打开串口调试助手,看到如下信息:证明串口数据发送没问题。
接着,我们在发送区输入上面的文字,输入完后按回车键。
然后单击发送,可以得到如下结果:七.实验总结通过本次实验,我进一步了解了串口的使用,学会了通过串口发送和接收数据,将通过串口发送来的数据回送回去。
该实验的硬件配置不同于前两个实验,串口1 与USB 串口默认是分开的,并没有在PCB上连接在一起,需要通过跳线帽来连接一下。
这里我们把P4 的RXD 和TXD 用跳线帽与P3 的PA9 和PA10 连接起来。
实验四外部中断实验一.实验简介STM32 的IO 口在本章第一节有详细介绍,而外部中断在第二章也有详细的阐述。
这里我们将介绍如何将这两者结合起来,实现外部中断输入。
二.实验目的进一步掌握串口编程,进一步学习外部中断编程,提高编程能力。
三.实验内容初始化IO口的输入,开启复用时钟,设置IO与中断的映射关系,从而开启与IO口相对应的线上中断事件,设置触发条件。
配置中断分组(NVIC),并使能中断,编写中断服务函数。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。
五.实验步骤1.编写中断服务程序代码2.使用ISP下载到实验板3.测试运行结果4.记录实验过程,撰写实验报告六.实验结果及测试源代码:打开串口助手。
七.实验总结首先需要将IO设置为中断输入口:1)初始化IO 口为输入。
2)开启IO 口复用时钟,设置IO 口与中断线的映射关系。
3)开启与该IO口相对的线上中断/事件,设置触发条件。
4)配置中断分组(NVIC),并使能中断。
5)编写中断服务函数。
这一节,使用的是中断来检测按键,通过WK_UP 按键实现按一次LED0 和LED 1 同时翻转,按KEY0 翻转LED0,按KEY1 翻转LED1。
试验中外部中断函数不能进入的原因分析:1)GPIO或者AFIO的时钟没有开启。
2)GPIO和配置的中断线路不匹配。
3)中断触发方式和实际不相符合。
4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线。
5)外部中断是沿触发,有可能不能检测到沿,比如中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平。
6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;,因为软件中断先于边沿中断处理。
实验五独立看门狗实验一.实验简介独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
二.实验目的通过编程,编写一个独立看门狗驱动程序三.实验内容启动STM32 的独立看门狗,从而使能看门狗,在程序里面必须间隔一定时间喂狗,否则将导致程序复位。
利用这一点,我们本章将通过一个LED 灯来指示程序是否重启,来验证STM32 的独立看门狗。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。
五.实验步骤1.参考教材独立看门狗部分,编写独立看门狗驱动程序。
建立和配置工程2.编写代码3.使用ISP下载到实验板4.记录实验过程,撰写实验报告六.实验结果及测试源代码:在配置看门狗后,看到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 熄灭一次。
实验七定时器中断实验一.实验简介STM32 的定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。
STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。
使用定时器预分频器和RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几微秒到几毫秒间调整。
STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。
二.实验目的熟练掌握定时器中断,学会对定时器中断的编程操作。
三.实验内容使用定时器产生中断,然后在中断服务函数里面翻转LED1 上的电平,来指示定时器中断的产生,修改中断时间。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件、串口调试助手。
五.实验步骤1.参考教材定时器中断部分,编写定时器中断的驱动程序。
2.编写主程序3.编译代码,使用JLINK或ISP下载到实验板4.记录实验过程,撰写实验报告六.实验结果及测试源代码:七.实验总结通过本次实验,认识到时间中断来控制LED灯的闪烁,同时也可以将时间中断应用到控制其他的程序块。
以TIME3为例产生中断的步骤为1)TIM3 时钟使能。
2)设置TIM3_ARR 和TIM3_PSC 的值。
3)设置TIM3_DIER 允许更新中断。
4)允许TIM3 工作。
5)TIM3 中断分组设置。