STM32实验报告.doc

上传人:灯火****19 文档编号:137163178 上传时间:2020-07-05 格式:DOC 页数:21 大小:352KB
返回 下载 相关 举报
STM32实验报告.doc_第1页
第1页 / 共21页
STM32实验报告.doc_第2页
第2页 / 共21页
STM32实验报告.doc_第3页
第3页 / 共21页
STM32实验报告.doc_第4页
第4页 / 共21页
STM32实验报告.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《STM32实验报告.doc》由会员分享,可在线阅读,更多相关《STM32实验报告.doc(21页珍藏版)》请在金锄头文库上搜索。

1、实验一:一个灯的闪烁 1、 实验要求1. 熟悉使用STM32F103ZET6开发板2. 利用C语言程序实现一个灯闪烁2、 电路原理图 图1-1 LED灯硬件连接图3、 软件分析1. 本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();2. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStruc

2、ture.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5. 主函数程序:int main(void) RCC_Configuration();/* 配置系统时钟

3、*/ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;) GPIOF-ODR = 0xfeff; /* PF8=0 - 点亮D3 */Delay(600000);GPIOF-ODR = 0xffff; /* PF8=1 - 熄灭D3 */Delay(600000); 4、 实验现象下载程序后开发板上的LED1灯闪烁5、 总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O端口的操作变得复杂了许多。51单片机点灯的程序最简单,直接在main()中写一个while(1),里面写4行代码就可以了。STM32进入while(1)之前必须先配置

4、I/O的方向,必须使能外设的时钟。对STM32来说,除了CM3内核都算外设,包括GPIO。STM32可以关闭任何外设的时钟以禁止该外设,这样设计是出于减少功耗的考虑。实验二:流水灯的闪烁 一、实验要求1、熟悉使用STM32F103ZET6开发板2、利用C语言程序实现流水灯的闪烁实验二、电路原理图 图1-2 流水灯硬件连接图三、软件分析1. 本实验用到以下4个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();GPIO_WriteBit();3个自定义函数LED2. 配置输入的时钟:SystemInit()主要对RCC寄存器进

5、行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Writ

6、e(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void) RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;) LED1(); LED2(); LED3(); 6. LED1实现所有灯从led1到led5依次点亮再全部熄灭,然后全部点亮,再全部熄灭的过程;LED2实现所有灯从led5到led1依次点亮的过程;LED3实现所有灯从led5到led1依次熄灭,点亮1、3、5灯,然后全部点亮,再全部熄灭

7、的过程;四、实验现象下载程序后开发板上的LED所有灯从led1到led5依次点亮再全部熄灭,然后全部点亮,再全部熄灭,从led5到led1依次点亮,所有灯从led5到led1依次熄灭,点亮1、3、5灯,然后全部点亮,再全部熄灭。五、总结通过代码分析发现,使用固件库函数可以大大简化编程工作,我们可以依葫芦画瓢,很容易修改成自己想要的功能代码。对相关寄存器的深入了解,可以使我们对各种外设功能有更深刻、更具体的掌握,使用起来也更得心应手。实验三:单级外部中断 一、实验要求1.利用C语言程序实现按下SW3, LED5闪烁20次单级外部中断实验2.通过实验掌握外部中断的编程方法二、电路原理图 1-3 外

8、部中断连接图三、软件分析1.STM32外部中断要经过3个部分模块设置处理,然后才进入到中断服务程序的处理,其框图如下:外部中断信号输入通道映射(选择)模块外部中断控制器模块NVIC中断控制器模块中断服务程序外部信号1-4 中断处理模块框图2.STM32外部中断:GPIO输入中断虽然有16个输入通道,但是只占用了7个中断向量。EXTI0EXTI4各占用一个中断向量,EXTI59共用一个,EXTI1015共用一个。所以在编程的时候EXTI59将共用一个中断函数,EXTI1015共用一个中断函数。3. 本实验用到以下6个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphCl

9、ockCmd();GPIO_Init();GPIO_WriteBit();EXTI_InitTypeDef();NVIC_PriorityGroupConfig()4. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA5. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;6. 应用GP

10、IO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);7.EXTI配置:引脚选择:GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);清除中断标志位:EXTI_ClearITPendingBit(EXTI_Line8)设置外部中断结构体的成员:EXTI_I

11、nitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);8.NVIC配置:分为四个部分,分别针对中断线0到中断线3,结构相同。NVIC_PriorityGroupConfig()函数配置占先优先级和副优先级9.主函数程序:int main() RCC_Configuration();/* 配置系统时钟 */ N

12、VIC_Configuration(); GPIO_Configuration();/* IO口初始化 */EXTI_Configuration();GPIO_Write(GPIOF,0xffff); /* 全灭 */Delay(5000); while(1) 四、实验现象每按下一次SW3,LED5闪烁20次,实现单级中断五、总结通过实验,我们学习了如何使用STM32的GPIO外部中断功能。GPIO外部中断使用方法比较容易掌握,只要沿着中断信号线一路设置遇到的寄存器,最后编写中断服务程序即可,当然还要设置中断优先级。实验四:中断嵌套 一、实验要求1.利用C语言程序实现中断嵌套实验按下SW3,

13、LED5闪烁20次 SW3 - PA0 LED5 - PF10 中断优先级为1;按下SW2, LED3闪烁20次 SW2 - PD3 LED3 - PF8 中断优先级为2; 按下SW1, LED1闪烁20次 SW1 - PA8 LED1 - PF6 中断优先级为3; 按下SW5, LED4闪烁20次 SW5 - PC13 LED4 - PF9 中断优先级为42. 通过实验掌握外部中断的编程方法三、软件分析1. 配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GP

14、IOA2. 声明GPIO结构: PF6PF10口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;7. 应用GPIO口:点亮LED1有五种方法ODR寄存器法:GPIOA-ODR=0xffbf;二、电路原理图 图1-5 多级中断硬件连接图位设置/清除寄存器法:GPIOA-BRR|=0X001;方法只适用于GPIOx_BSRR寄存器GPIO_WriteBit()函数法:GPIO_Write(0xffbf);置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);7.EXTI配置:引脚选择:GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);清除中断标志位:EXTI_ClearITPendingBit(EXTI_Line8)设置外部中断结构体的成员:EXTI_InitStructure

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号