ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:184.15KB ,
资源ID:19827996      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19827996.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32实验报告Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32实验报告Word下载.docx

1、GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void) RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;) GPIOF-ODR = 0xfeff; /* PF8=0 - 点亮D3 */ Delay(600000);ODR = 0xffff; /* PF8=1 - 熄灭D3 */ 4、实验现象下载程序后开发板上的LED1灯闪烁5、总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O端口的操作变得复杂了许多。51单

2、片机点灯的程序最简单,直接在main()中写一个while(1),里面写4行代码就可以了。STM32进入while(1)之前必须先配置I/O的方向,必须使能外设的时钟。对STM32来说,除了CM3内核都算外设,包括GPIO。STM32可以关闭任何外设的时钟以禁止该外设,这样设计是出于减少功耗的考虑。实验二:流水灯的闪烁 一、实验要求1、熟悉使用STM32F103ZET6开发板2、利用C语言程序实现流水灯的闪烁实验二、电路原理图图1-2 流水灯硬件连接图三、软件分析1.本实验用到以下4个库函数(省略了参数):GPIO_WriteBit();3个自定义函数LED LED1(); LED2(); L

3、ED3();6.LED1实现所有灯从led1到led5依次点亮再全部熄灭,然后全部点亮,再全部熄灭的过程;LED2实现所有灯从led5到led1依次点亮的过程;LED3实现所有灯从led5到led1依次熄灭,点亮1、3、5灯,然后全部点亮,再全部熄灭的过程;四、实验现象下载程序后开发板上的LED所有灯从led1到led5依次点亮再全部熄灭,然后全部点亮,再全部熄灭,从led5到led1依次点亮,所有灯从led5到led1依次熄灭,点亮1、3、5灯,然后全部点亮,再全部熄灭。五、总结通过代码分析发现,使用固件库函数可以大大简化编程工作,我们可以依葫芦画瓢,很容易修改成自己想要的功能代码。对相关寄

4、存器的深入了解,可以使我们对各种外设功能有更深刻、更具体的掌握,使用起来也更得心应手。实验三:单级外部中断 1.利用C语言程序实现按下SW3, LED5闪烁20次单级外部中断实验2.通过实验掌握外部中断的编程方法1-3 外部中断连接图外部中断要经过3个部分模块设置处理,然后才进入到中断服务程序的处理,其框图如下:1-4 中断处理模块框图外部中断:GPIO输入中断虽然有16个输入通道,但是只占用了7个中断向量。EXTI0EXTI4各占用一个中断向量,EXTI59共用一个,EXTI1015共用一个。所以在编程的时候EXTI59将共用一个中断函数,EXTI1015共用一个中断函数。3.本实验用到以下

5、6个库函数(省略了参数):EXTI_InitTypeDef();NVIC_PriorityGroupConfig()4.配置输入的时钟:5.声明GPIO结构:6.应用GPIO口:配置:引脚选择: GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3);清除中断标志位:EXTI_ClearITPendingBit(EXTI_Line8)设置外部中断结构体的成员: = EXTI_Mode_Interrupt; = EXTI_Trigger_Falling; = ENABLE;EXTI_Init(&EXTI_InitStructure);分

6、为四个部分,分别针对中断线0到中断线3,结构相同。NVIC_PriorityGroupConfig()函数配置占先优先级和副优先级9.主函数程序:int main() /* 配置系统时钟 */ NVIC_Configuration(); /* IO口初始化 */ EXTI_Configuration(); GPIO_Write(GPIOF,0xffff); /* 全灭 */ Delay(5000); while(1) 每按下一次SW3,LED5闪烁20次,实现单级中断通过实验,我们学习了如何使用STM32的GPIO外部中断功能。GPIO外部中断使用方法比较容易掌握,只要沿着中断信号线一路设置遇

7、到的寄存器,最后编写中断服务程序即可,当然还要设置中断优先级。实验四:中断嵌套 1.利用C语言程序实现中断嵌套实验按下SW3, 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 中断优先级为41.配置输入的时钟:2.声明GPIO结构:7.应用GPIO口:图1-5 多级中断硬件连接图8.NVIC配置:优先

8、级组都设为 2,PC13 中断主次优先级分别为4;PA8 主次优先级分别为3;PD3主次优先级分别为2;PA0 主次优先级分别为1;要求先进入 PC13 中断,执行某一个任务,突然 PA8 打断 PC13 的中断,转而进行 PA8的中断。PC13 的中断任务执行完毕,返回到 PC13中断继续原来的中断任务。突然 PD3 打断 PA8 的中断,转而进行 PD3的中断。PD3 的中断任务执行完毕,返回到 PA8中断继续原来的中断任务,以此推类。 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 函数程序: while(1)按下SW3, LED5闪烁20

9、次,闪烁过程中因为其中断优先级为1,所以除了复位按键其他按键不能打断LED5的亮灯情况;按下SW2, LED3闪烁20次,因为中断优先级为2,SW3可以使LED3闪烁停止而其他按键不能;按下SW1, LED1闪烁20次; 按下SW5, LED4闪烁20次,中断优先级为4通过实验,我们学习了如何使用STM32的GPIO外部中断功能和中断嵌套的编程。GPIO外部中断使用方法比较容易掌握,设置中断优先级时中断优先级越高,设置的数字应该越小。实验五:TIM2的基本应用 1.利用C语言程序实现用通用定时器TIM2中断控制LED的闪烁2.通过实验掌握定时器的编程方法二、软件分析的通用定时器:STM32的通

10、用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。STM32有4个通用定时器(TIM2、TIM3、TIM4、TIM5),它们适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作。 void TIM2_Init(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 函数程序:int main() /* 配置GPIO I/O口初始化 */ /* 配置NVIC */ TIM_Configuration(); /* 配置TIMs

11、*/ while(1);三、实验现象TIM2使LED1灯以1S的周期闪烁,单次定时时间为100*10-6S四、总结通过实验,我们学习了如何使用STM32的通用定时器功能。通用定时器的溢出时间计算:使用通用定时器的最简单功能,就是定时,把计数器单元也当作一个分配器,时钟信号经过预分频器和计数器两级分频后,出来的信号就是溢出中断信号。所以溢出中断频率由以下式子确定:定时时间为:T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK实验六:TIM2,TIM3,TIM4多定时器的应用 1. 利用C语言程序实现TIM定时器多级中断2. 通过实验掌握定时器的编程方法2、软件分

12、析预分频器计数器自动装载寄存器CK_CNTCK_PSC PF6PF10口配置为输出、应用GPIO口3.EXTI配置:4.NVIC配置:5.TIM配置:使用定时器,就必须使能定时器的时 钟 , 这 就 是 函 数 RCC_APB1PeriphClockCmd(); , 通 过 它 开 启RCC_APB1Periph_TIM2TIM_DeInit( TIM2); 该函数主要用于复位 TIM2 定时器,使之进入初始状态。然后我们对自动重装载寄存器赋值,TIM_Period 的大小实际上表示的是需要经过 TIM_Period 次计数后才会发生一次更新或中断。 TIM_OCInitTypeDef TIM

13、_OCInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /* TIM2 configuration 通道1:输出比较模式 */ = 1999; /自动重装载寄存器的值 =35999;/时钟预分频数 = 0;/采样分频 = TIM_CounterMode_Up; /向上计数 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_PrescalerConfig(TIM2, 7199, TIM_PSCReloadMode_Immediate); TIM_OC1Init(TIM2

14、, &TIM_OCInitStructure); = TIM_OCMode_Timing; = TIM_OutputState_Enable; = 0x0; = TIM_OCPolarity_High; TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable); /* TIM3 configuration Output Compare Timing Mode configuration: Channel1 */ = 3999; TIM_TimeBaseInit(TIM3, & TIM_OC1Init(TIM3, & /* TIM4 configurat

15、ion Output Compare Timing Mode configuration: = 5999; TIM_TimeBaseInit(TIM4, & TIM_OC1Init(TIM4, & TIM_Cmd(TIM2, ENABLE); /* TIM2 enable counter */ TIM_Cmd(TIM3, ENABLE); /* TIM3 enable counter */ TIM_Cmd(TIM4, ENABLE); /* TIM4 enable counter */ TIM_PrescalerConfig(TIM2, 20000, TIM_PSCReloadMode_Imm

16、ediate); TIM_PrescalerConfig(TIM3, 30000, TIM_PSCReloadMode_Immediate); TIM_PrescalerConfig(TIM4, 40000, TIM_PSCReloadMode_Immediate); TIM_ClearFlag(TIM2, TIM_FLAG_Update); /清除TIM2溢出中断 TIM_ClearFlag(TIM3, TIM_FLAG_Update); /清除TIM3溢出中断标志TIM_ClearFlag(TIM4, TIM_FLAG_Update); /清除TIM4溢出中断标志 TIM_ITConfig

17、(TIM2, TIM_IT_Update, ENABLE);/使能中断TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); /使能中断TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); /使能中断LED1、LED3、LED5分别以、1s、2s的频率闪烁实验七:串口USART1读取CPU的ID号 1.利用C语言程序实现串口USART1读取CPU的ID号2.通过实验掌握串口USART1的编程方法1-6 串口硬件连接图1.用查询方式使用STM32的串口发送数据的基本程序流程是:打开复用功能、串口1的时钟;设置TXD、RXD引脚工作模式

18、;设置波特率、数据位数、停止位数、奇偶校验位等; 使能串口;发送数据;等待直到数据发送完成;清除发送完成标志。2.在RCC_Configuration()函数的GPIO_Init()函数的加一个函数main函数改为如下内容: /* 配置系统时钟 */ /* IO口初始化 */ USART_Configuration(); /* to get the chipid and put it in ChipUniqueID3 ,printf the chipid */ Get_ChipID(); /* printf the flash memory amount */ printf(rn芯片的唯一ID为: %X-%X-%Xrn,ChipUniqueID0,ChipUniqueID1,ChipUniqueID2); printf(rn芯片flash的容量为: %dK rn, *( u16 *)(0X1FFFF

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1