嵌入式实验3按键实验(中断方式)
- 格式:docx
- 大小:16.29 KB
- 文档页数:4
第1篇一、实验目的1. 理解中断的概念和作用。
2. 掌握中断系统的工作原理。
3. 学会编写中断服务程序。
4. 熟悉嵌入式系统中中断的使用方法。
二、实验环境1. 嵌入式开发板:STM32F103系列2. 开发环境:Keil uVision53. 编译器:ARM Keil MDK4. 仿真器:ST-Link三、实验内容本次实验主要围绕中断系统展开,包括以下几个方面:1. 中断源配置2. 中断优先级设置3. 中断服务程序编写4. 中断实验验证四、实验步骤1. 中断源配置首先,我们需要配置中断源,例如定时器中断、外部中断等。
以定时器中断为例,我们需要在初始化代码中开启定时器,并设置定时器中断的使能。
```cvoid TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET){TIM_ClearITPendingBit(TIM2, TIM_IT_Update);// 处理定时器中断}}void TIM2_Init(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = 1000 - 1; // 定时器溢出时间TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; // 定时器预分频TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);TIM_Cmd(TIM2, ENABLE);}```2. 中断优先级设置在STM32F103系列中,中断优先级可以通过NVIC(嵌套向量中断控制器)进行设置。
一、实验背景随着物联网、智能制造等领域的快速发展,嵌入式系统在各个行业中扮演着越来越重要的角色。
中断技术作为嵌入式系统的重要组成部分,对于提高系统的实时性、可靠性和响应速度具有重要意义。
为了更好地掌握中断技术,我进行了嵌入式中断实验,以下是我对实验的心得体会。
二、实验目的1. 理解中断的概念、作用及中断处理流程;2. 掌握嵌入式系统中断的配置方法;3. 学会编写中断服务程序;4. 通过实验验证中断技术的应用效果。
三、实验内容1. 硬件环境:嵌入式开发板、仿真器、连接线等;2. 软件环境:嵌入式操作系统、集成开发环境、仿真器驱动程序等;3. 实验步骤:(1)搭建实验环境,包括硬件连接和软件配置;(2)配置中断源,如GPIO、定时器等;(3)编写中断服务程序,实现中断响应和处理;(4)通过仿真器观察实验效果,验证中断技术。
四、实验心得1. 理解中断原理在实验过程中,我首先学习了中断的基本概念和作用。
中断是指当外部事件发生时,系统暂停当前执行的任务,转而执行中断服务程序,处理外部事件。
通过实验,我明白了中断处理流程,包括中断请求、中断响应、中断处理和中断返回等环节。
2. 中断配置方法在实验中,我学习了如何配置中断源。
以GPIO为例,首先需要设置GPIO引脚为中断模式,然后配置中断触发方式(上升沿、下降沿或双边沿触发),最后设置中断优先级。
通过实验,我掌握了中断配置方法,为后续应用中断技术打下了基础。
3. 编写中断服务程序中断服务程序是中断处理的核心,我通过实验学会了编写中断服务程序。
在编写过程中,需要注意以下几点:(1)保护现场:在中断服务程序开始执行前,需要保存当前CPU状态,如寄存器值等;(2)处理中断:根据中断类型,执行相应的处理逻辑;(3)恢复现场:在中断服务程序执行完毕后,需要恢复CPU状态,以便继续执行被中断的任务。
4. 实验效果验证通过仿真器观察实验效果,我发现中断技术能够有效地提高系统的响应速度和实时性。
按键中断实验实验目的:1掌握IO口的使用2掌握中断处理程序编写3掌握按键中断的使用实验器材:Sinosys-EA2440实验箱PC机实验原理:在SinoSys-EA2440a中,已经将EINT0、EINT2、EINT19、EINT11作为外部中断源和开发板上位号为SW1、SW2、SW3、SW4的这四个小按键相连,中断按钮的连接图如图1.1:1.1中断按钮结构电路在SinoSys-EA2440a 中,已将EINT0、EINT2、EINT19、EINT11 作为外部中断源和开发板上位号为SW1、SW2、SW3、SW4 的这四个小按键相连,其中,EINT0、EINT2、EINT11、EINT19 分别和GPF0、GPF2、GPG3、GPG11 复用,当GPFCON[5:4]=10、GPFCON[1:0]=10、GPGCON[7:6]=10、GPGCON[23:22]=10 时,I/O 为中断方式。
通过寄存器的控制,可以达到开启中断和控制中断的目的。
实验总结:将4个按键端口设置成EINT0、EINT2、EINT11、EINT19模式。
rGPGCON = rGPGCON & (~((3<<22)|(3<<6))) | ((2<<22)|(2<<6)) ;rGPFCON = rGPFCON & (~((3<<4)|(3<<0))) | ((2<<4)|(2<<0)) ;通过EXTINT寄存器对外部中断触发方式进行设置,这里设置下降沿触发。
rEXTINT0 &= ~(6|(6<<8));rEXTINT0 |= (0|(0<<8));// EINT0、EINT2rEXTINT1 &= ~(7<<12);rEXTINT1 |= (0<<12); // EINT11rEXTINT2 &= ~(0xf<<12);rEXTINT2 |= (0<<12); // EINT19对外部中断挂起寄存器清零,对外部中断屏蔽寄存器时能,同时设置中断服务程序的地址,将中断挂起寄存器清零,开启中断。
嵌入式中断按键实验报告本实验的目的是学习如何在嵌入式系统中使用中断来处理按键输入。
通过该实验,我们可以掌握如何配置和使用中断,以及如何编写中断服务程序来处理按键输入。
实验材料:1. 嵌入式开发板2. 按键模块3. 电源适配器实验步骤:1. 将按键模块连接到嵌入式开发板的GPIO引脚上,确保连接正确。
2. 打开开发板的开关,给开发板供电。
3. 在开发板上配置GPIO引脚作为中断输入,并使能中断。
4. 编写中断服务程序来处理按键输入。
当按键被按下时,中断服务程序将被调用,并执行相应的操作。
5. 在主程序中初始化中断服务程序,并进入一个无限循环。
在该循环中,可以进行其他的操作,并等待按键中断的发生。
实验结果:在实验中,我们成功地配置并使用了中断来处理按键输入。
当按键被按下时,中断服务程序被调用,并执行了相应的操作。
讨论与分析:通过该实验,我们学习到了中断的基本原理和使用方法。
中断是一种非常重要的机制,可以使嵌入式系统更高效地响应外部事件。
在实际的嵌入式应用中,按键输入是非常常见的操作,使用中断可以很好地处理按键输入,提高系统的响应速度和可靠性。
然而,中断也存在一些问题。
首先,中断处理需要一定的时间,在高速的系统中,中断的处理时间可能会影响到系统的性能。
另外,当系统存在多个中断源时,中断处理的优先级和调度也需要仔细设计,以确保系统的正常运行。
总结:通过本实验,我们成功地学习了嵌入式系统中使用中断处理按键输入的方法。
中断是一种重要的机制,可以使系统更高效地响应外部事件。
通过合理地设计和使用中断,可以提高系统的性能和可靠性。
在实际的嵌入式应用中,我们应该根据具体的需求和系统条件来选择最合适的中断处理方法,并进行适当的优化和调试。
实验五中断控制实验(一)实验目的了解中断的作用;掌握嵌入式系统中断的处理流程;掌握ARM中断编程。
(二)实验设备计算机;ARM硬件仿真器;ARM开发板(三)实验硬件设置在做实验之前,先将开发板电源接好,将仿真器的USB连线与电脑相连,通电,然后按核心板的复位键。
(四)实验原理1. 中断的基本概念CPU与外设之间传输数据的控制方式通常有三种:查询方式、中断方式和DMA方式。
DMA 方式将在后续实验中说明。
查询方式的优点是硬件开销小,使用起来比较简单。
但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了CPU的利用率。
为了解决这个矛盾,通常采用中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU再返回并继续执行原来被中断的主程序。
这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。
能够向CPU发出中断请求的设备或事件称为中断源。
系统引入中断机制后,CPU与外设(甚至多个外设)处于“并行”工作状态,便于实现信息的实时处理和系统的故障处理。
中断方式的原理示意图如下所示。
图5-7 中断处理示意图1)中断响应中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息。
然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。
CPU响应中断是有条件的,如内部允许中断、中断未被屏蔽、当前指令执行完等。
2)中断服务子程序CPU响应中断以后,就会中止当前的程序,转去执行一个中断服务子程序,以完成为相应设备的服务。
实验步骤与结果分析1、建立工程1)、在工程文件中包含如下文件(int、doc、user、lib、start)2)、选择STM32F103VB芯片3)、分别添加如下文件2、运行过程(1) 使用Keil uVision3 通过ULINK仿真器连接EduKit-M3实验平台,打开实验例程NVIC_test子目录下的NVIC.Uv2例程,编译链接工程;(2) 点击MDK 的Debug菜单,选择Start/Stop Debug Session项或Ctrl+F5键,远程连接EduKit-M3实验平台并下载调试代码到目标系统的RAM中;(3) 程序正常启动运行后,会有以下结果:当第一次发生EXTI9 中断后(按下EduKit-M3实验平台上Key按钮),SysTick 中断的优先级比EXTI0中断优先级高。
因此当EXTI0中断发生时(按下Wakeup按钮),将先执行主要程序代码分析/* Configure one bit for preemption priority */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);主从优先级的选择Group_1,有先占优先级1位,从优先级3位//配置一个比特为抢占优先级/* Enable the EXTI0 Interrupt */ //使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PreemptionPriorityValue;主优先级的选择PreemptionPriorityValueNVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//从优先级等于0.NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Enable the EXTI9_5 Interrupt */ //使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Configure the SysTick Handler Priority: Preemption priority and sub priority */ //配置SysTick处理程序优先级:抢占优先级和子优先级NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, !PreemptionPriorityValue, 0);while (1){if(PreemptionOccured != FALSE)//当PreemptionOccured != FALSE)抢占发生{GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 -GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9)));Delay(0x5FFFF);}}void GPIO_Configuration(void){/* Configure PC6, PC7, PC8 and PC9 as output push-pull */ 使能为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //使能其速度为50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //使能为推挽输出GPIO_Init(GPIOC, &GPIO_InitStructure);/* Configure GPIOA Pin0 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);/* Configure GPIOB Pin9 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为推挽输出入GPIO_Init(GPIOB, &GPIO_InitStructure);}GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);/* Configure EXTI Line0 to generate an interrupt on falling edge */ 配置EXTI Line0产生一个中断在下降沿EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);(写不完时,可调整表结构。
嵌入式-中断实验
嵌入式中断实验是一种用来测试和学习嵌入式系统中断功能的实验。
中断是嵌入式系统中常用的一种机制,用于处理紧急事件或高优先级任务。
通过中断,系统可以立即响应外部事件,中断当前正在执行的任务,执行与中断事件相关的代码,然后返回到原来的任务中继续执行。
在进行中断实验时,通常需要以下步骤:
1. 确定中断源:确定要模拟的中断事件,比如外部输入的触发事件、定时器到达时间等。
2. 配置中断控制器:根据硬件平台和实验要求,配置中断控制器的相应寄存器,使其能够正确地处理中断信号。
3. 编写中断服务程序(ISR):定义一个中断服务程序,用于
处理中断事件。
ISR应当对事件进行必要的处理,然后返回到
原来的任务中。
4. 测试和调试:连接硬件平台,运行实验程序,并进行测试和调试,确保中断功能正常工作。
5. 扩展和优化:根据需要,可以进一步扩展和优化中断功能,比如增加多个中断源,实现优先级控制,提高系统响应速度等。
通过嵌入式中断实验,可以深入了解中断机制的工作原理和应用方法,提高对嵌入式系统的理解和能力。
嵌入式-中断实验本次实验是一项关于嵌入式系统中断的实验,通过本次实验,我们可以深入了解中断的概念和实现原理,并通过程序代码实现中断的应用。
一、实验原理在嵌入式系统中,中断是一种非常重要的机制,它能够使CPU在执行程序的同时,及时响应外部的事件,例如外部设备的数据传输、计时器的溢出等,从而保证系统的稳定和高效运行。
中断的实现原理是通过CPU计时器实现的,当计时器的值达到某个设定值时,就会发出中断信号,将CPU的执行过程中断,跳转到中断处理程序中,处理完中断事件后,再回到原来的程序中断处继续执行。
二、实验器材1. STC89C52单片机开发板2. LED灯一盏3. 电路连线三、实验步骤1. 首先,在开发板上连接好电路,将LED连接到P1口第0个引脚上,然后在开发环境中编写程序代码。
2. 在程序代码中先设置定时器的计数值,例如本次实验设置为65535。
然后开启定时器中断功能,使CPU在执行程序的同时能够及时响应中断事件,并在中断发生时跳转到中断处理程序中执行。
3. 在中断处理程序中将LED灯的状态进行反转,即每次中断事件发生时,将LED灯的状态从亮转为灭,或从灭转为亮。
4. 在主程序中重复执行LED灯的闪烁操作,从而能够观察到中断事件对LED灯亮灭状态的影响。
四、实验代码#include<reg52.h>unsigned char T0RH=0xff; //定时器高八位unsigned char T0RL=0xff; //定时器低八位void InitTimer0() //初始化定时器0{TMOD &= 0xf0; //清零T0控制位TMOD |= 0x01; //设置T0为模式1TH0 = T0RH; //设置定时器0高八位初值TL0 = T0RL; //设置定时器0低八位初值TR0 = 1; //启动定时器0ET0 = 1; //允许定时器0中断EA = 1; //开放总中断允许}五、实验效果经过以上步骤,就可以实现中断模式下的LED灯闪烁效果,每次定时器中断事件发生时,LED灯的亮灭状态会发生变化。
《嵌入式系统》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称按键中断实验二、实验目的通过实验掌握S3C2410X的中断控制寄存器的使用;通过实验掌握S3C2410X处理器的中断响应过程;通过实验掌握ARM处理器的中断方式和中断处理过程;通过实验掌握ARM处理器中断处理的软件编程方法。
三、实验内容编写程序,当用户在实验箱按下KEY1键或KEY2键时在中断服务子程序中将相关信息打印到串口中,显示在超级终端上。
四、实验原理在本实验平台的主板上设计了两个外部按键,电路原理图如下:EXINT0和EXINT1信号作为CPLD芯片的输入信号。
CPLD内部逻辑图:五、实验结果超级终端上显示以下信息:按下KEY1键或KEY2键,超级终端上显示以下信息。
六、练习题编写程序实现:按下KEY1或KEY2后点亮实验系统的LEDs一段时间后熄灭。
任务:按下KEY1键后LED1点亮一段时间后熄灭;按下KEY2键后点亮LED2一段时间后熄灭。
#define rCPLDIntControl (*(volatile unsigned char*)0x22600000)#define rCPLDIntStatus (*(volatile unsigned char*)0x22200000)#define rCPLDLEDADDR (*(volatile unsigned char*)0x21180000)void __irq int_int(void){unsigned char Status;int i;Status = rCPLDIntStatus;Status = ~(Status & 0x6);if(Status & 0x2){uart_printf(" Eint0 interrupt occurred.\n");rCPLDLEDADDR = (rCPLDLEDADDR | 0xFF )& 0xFE;for(i = 0; i < 100000; i++);rCPLDLEDADDR = rCPLDLEDADDR | 0xFF ;}else if(Status & 0x4){uart_printf(" EINT1 interrupt occurred.\n");rCPLDLEDADDR =(rCPLDLEDADDR | 0xFF) & 0xFD;for(i = 0; i < 100000; i++);rCPLDLEDADDR = rCPLDLEDADDR | 0xFF ;}rEINTPEND=(1<<9);ClearPending(BIT_EINT8_23);}。
嵌入式系统实验中断管理程序设计下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
本文下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Downloaded tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The documents can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!嵌入式系统作为当今信息技术领域的热门话题,已经广泛应用于汽车、智能家居、医疗器械等各个领域。
嵌入式KL键盘中断实验
嵌入式KL键盘中断实验是一种使用嵌入式系统的KL键盘进
行中断方式实验的方法。
在嵌入式系统中,中断是一种常用的机制,用于实现多任务处理和实时系统。
在键盘输入中断实验中,我们可以利用KL键
盘的中断功能,实现在用户按下键盘按键时自动触发中断,并进行相应的处理。
实验步骤如下:
1. 准备硬件环境:使用KL键盘连接到嵌入式系统的对应接口。
2. 配置中断:通过编程设置KL键盘对应的中断引脚,使其可
以触发中断。
具体实现方法根据所用的嵌入式系统和开发工具不同而有所差异,可以查阅相应的文档和资料进行配置。
3. 编写中断处理程序:在嵌入式系统中,中断处理程序是在中断发生时被调用的函数。
我们需要编写一个中断处理程序来响应键盘中断,并进行相应的处理,比如读取键盘输入的字符并进行显示或其他操作。
4. 注册中断处理程序:将编写的中断处理程序注册到嵌入式系统的中断向量表中,以便系统在中断发生时能够找到并执行该程序。
5. 运行实验:启动嵌入式系统,按下KL键盘的按键,触发中
断并执行中断处理程序。
根据编写的中断处理程序的功能,可以在显示屏上显示按下的按键字符或进行其他操作。
需要注意的是,不同的嵌入式系统和开发工具对于中断的实现方式和配置方法可能存在差异,具体的实验步骤和代码实现可能需要根据具体的情况进行调整。
建议在进行实验前充分了解相关的文档和资料,以确保正确实施实验。
嵌入式实验3按键实验(中断方式)河南机电高等专科学校《嵌入式系统开发》课程实验报告系部:电子通信工程系班级:电信1##姓名: ######学号: 120######实验三按键实验(中断方式)一.实验简介在实验一的基础上,使用按键控制流水灯。
二.实验目的熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。
三.实验内容实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。
下载代码到目标板,查看运行结果。
四.实验设备硬件部分:PC计算机(宿主机)、STM32实验板。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1在实验一代码的基础上,编写中断初始化代码2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序3编写中断服务程序4编译代码,下载到实验板5.单步调试6记录实验过程,撰写实验报告六.实验结果及测试中断方式的按键式实验,是通过配置外部中断寄存器和中断嵌套(NVIC)控制器来实现按键按下控制LED灯亮灭。
通过按键中断打断主函数,执行LED1取反一次。
主函数初始化中断配置和LED配置,点亮LED1后一直等待中断,每中断一次,LED1取反一次。
int main(void){LED_GPIO_Config();LED1_ON;CLI();SEI();EXTI_PA0_Config();while(1){}}中断嵌套控制寄存器的配置为中断嵌套分组1;抢占优先级0;响应优先级0 代码如下:void NVIC_Configuration(void){NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}外部中断按键的配置源码如下:配置PA0位中断线,并使能AFIO 时钟void EXTI_PA0_Config(void){GPIO_InitTypeDef GPIO_InitStructure;EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);NVIC_Configuration();GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);}产生中断后程序进入中断服务子程序,将LED1取反,并软件清除标志位,中断服务子程序如下:void EXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0) != RESET){LED1_TOGGLE;EXTI_ClearITPendingBit(EXTI_Line0);}}七.实验总结通过这次实验,课程知识的实用性很强,因此实验就显得非常重要,刚开始做实验的时候,由于自己的理论知识基础不好,在实验过程遇到了许多的难题,也使我感到理论知识的重要性。
中断实现——实验三一、实验目的1. 理解LC-3模型机的中断机制,使用LC-3指令集进行汇编编程2. 实现中断驱动I/O效果,进一步加深对中断驱动I/O工作原理的理解二、实验内容1. 实验环境,如操作系统环境(Windows XP)、软件(LC-3 simulator、LC3Edit)2. 问题描述中断驱动I/O中断一个正在运行的程序,执行中断服务程序,执行完后,返回被中断的程序,接着被中断的指令,继续执行。
在这个试验中,采用键盘作为输入设备中断程序。
三、分析与实现1. 分析问题,详述分析过程这个程序被分成了三个部分(用户程序代码、中断程序代码、延时程序代码),阐述每个部分如何实现的,以及分析能否在程序中应用其他自陷程序,说明为什么;说明中断程序存放内存位置,尝试放在其他位置是否可以。
2. 画出程序运行示意图3. 代码实现(若程序代码过于冗长,可放在附录部分;此处必须包含主要的功能代码)4. 运行程序的步骤阐述一下,运行此程序的步骤。
四、实验结果1. 常态运行结果截图2. 极端情况下的运行结果截图3. 对程序结果作出必要的文字描述,并分析运行结果五、心得体会在实验过程中,对自己的分析问题、动手编程、耐心等能力进行自我评价,认识自己的不足,逐步在认识自我中提高自身;把对实验的内容与课程内容进行联系,谈谈自己的收获。
六、参考资料1. 《Guide to Using the Windows version of the LC-3 Simulator and LC3Edit》2. 《计算机系统概论·英文版·第二版》3. 其他资料七、附录1. 全部程序代码,包含详细注释2. 其他。
昆明理工大学信息工程与自动化学院学生实验报告(2011 —2012 学年第 2 学期)课程名称:嵌入式技术基础与实验开课实验室:信自楼234 2012 年 5 月 10 日年级、专业、班自动化092 学号姓名成绩实验项目名称键盘中断实验指导教师教师评语教师签名:年月日注:报告内容按实验须知中七点要求进行。
一、实验目的1、熟练运用CodeWarrior嵌入式开发系统环境、汇编、C语言、调试方式;2、复习串行通信接口(SCI)的内容;3、加强键盘中断基本原理及编程原理的理解;4、理解行扫描法的原理并能进行键值识别和键值编码;5、理解键盘接线原理图。
(如图5-1所示)二、实验原理及基本技术路线图(方框原理图)本实验采用4x4矩阵式键盘。
PTG4、PTD2、PTD3、PTD7分别接四根线,定义为输入且上拉,PTG0-PTG3分别接四根行线,且定义为输出行扫描法是使每一行输出低电平,,其余行为高电平,然后读取列值,如果列值中有低电平,则表明该行和列交点处的键被按下;若为全高则再扫描下一行,知道扫描完全部的行为止。
这样就可以知道哪一行哪一列交点键被按下。
MCU与键盘接线原理如下图3-1 I/O 口引脚的连接图三、所用仪器、材料(设备名称、型号、规格等)飞思卡尔试验箱四、实验方法、步骤低电平1、资源使用键盘的-数据线分别接在MCU G 口的 0-4 号引脚、 D 口的 2、3、7号引脚。
MCU 的SCI 发送引脚 E 口的 0号引脚接MAX232的TTL 电平接收引脚( 11号),MCU 的SCI 接收引脚 E 口的 1号引脚接MAX232的TTL 电平发送引脚( 12号)2、硬件设计先阅读源程序,查看相应的端口的宏定义,再根据端口号来接线。
3、软件设计(主要的程序流程图)AW60 键盘 MAX232 计算机4、编程(关键性程序段)PC接收函数private void SCIPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e){String str = String.Empty;bool Flag;//标记串口接收数据是否成功int len;//标记接收的数据的长度//调用串口接收函数,并返回结果Flag = sci.SCIReceiveData(SCIPort,ref PublicVar.g_ReceiveByteArray);if (Flag == true)//串口接收数据成功{len = PublicVar.g_ReceiveByteArray.Length;//对于字符串形式,考虑到可能有汉字,//直接调用系统定义的函数,处理整个字符串str = Encoding.Default.GetString(PublicVar.g_ReceiveByteArray);SCIUpdateRevtxtbox(TbShowString, str);//十进制和十六进制形式按字节进行处理for (int i = 0; i < len; i++){//十进制都是按照三位来显示,字节之间有空格表示区分SCIUpdateRevtxtbox(TbShowDec,PublicVar.g_ReceiveByteArray[i].ToString("D3") + " ");//十六进制都是按照两位来显示,字节之间有空格表示区分SCIUpdateRevtxtbox(TbShowHex,PublicVar.g_ReceiveByteArray[i].ToString("X2") + " ");}this.TSSLState.Text = "过程提示:数据接收成功!";}//接收数据失败elsethis.TSSLState.Text = "过程提示:数据接收失败!";}main函数#include "Includes.h"void main(void){//1 关总中断DisableInterrupt(); //禁止总中断//2 芯片初始化MCUInit();//3 模块初始化//3.1 SCI初始化SCIInit(SCI_NUM_1,SYSTEM_CLOCK,38400);//用SCI1,系统时钟为时钟源,波特率为9600 //3.2 键盘初始化KBInit();//4 开中断//4.1 开键盘中断EnableKBint();//4.2 开总中断EnableInterrupt();键盘中断函数#include "isr.h"//-------------------------------------------------------------------------*//函数名: isrKeyBoard *//功能: 扫描键盘,向串口发送键值和定义值*//参数: 无*//返回: 无*//说明: 调用了KBScanN、SCISend1、KBInit函数*//-------------------------------------------------------------------------*interrupt void isrKeyBoard(void){uint8 value;uint16 i;for(i=0; i<1000; i++);DisableInterrupt(); //关总中断DisableKBint(); //屏蔽键盘中断value = KBScanN(10); //扫描键值,存于value中if(value!=0xFF){SCISend1(SCI_NUM_1, value); //发送键值SCISend1(SCI_NUM_1,KBDef(value));//键值转化为定义值并发送}KBInit(); //键盘初始化键盘中断EnableKBint(); //开放键盘中断EnableInterrupt() ; //开总中断}五、实验过程原始记录(数据、图表、计算等)六、实验结果、分析和结论(误差分析与数据处理、成果总结等。
嵌入式实验报告中断实验报告指导教师:高金山实验者:13410801 房皓13410802 张耀荣一、实验目的:1.理解中断向量表的结构2.理解中断处理的过程3.学习编写中断处理程序的方法二、实验要求:1.修改源程序,通过中断方式响应按键,当1-16键按下时,数码管显示0-F。
2.提高内容:以FIQ方式,替代IRQ方式,实现按下任何一个键,数码管显示按键号的功能。
三、实验内容:1.设计主程序,使8个LED以一定的时间间隔从右到左依次点亮,循环显示;(实验一的内容)2.当有键按下时,在七段数码管上,显示对应的16个键盘编码值 0-9 a-f(实验二、三的内容)四、程序编辑:;boot.sIMPORT postDelayIMPORT osStack;IMPORT post_initStackIMPORT init_StackIMPORT post_initGpioIMPORT post_initMemIMPORT post_initKeyIMPORT dummyOsIMPORT FIQ_HandlerIMPORT ICMRIMPORT init_ICMRIMPORT FIQIMPORT init_FIQ;IMPORT PSSRAREA boot ,CODE ,READONLYENTRYB Reset_HandlerB Undefined_HandlerB SWI_HandlerB Prefetch_HandlerB DataAbort_HandlerNOPB Reset_HandlerB FIQ_HandlerUndefined_HandlerB Undefined_HandlerSWI_HandlerB SWI_HandlerPrefetch_HandlerB Prefetch_HandlerDataAbort_HandlerB DataAbort_HandlerIRQ_HandlerB IRQ_Handler ;Defined by yourself Reset_Handler;*************************;Check if run in the SDRAM;*************************MOV R0,PCCMP R0,#0x0000003CBNE Stack;**************************;Init Memory;**************************mov r14,pc;ldr pc,=init_Memoryldr pc,=post_initMem;**************************;Init Stack;************************** Stackmov r14,pcldr pc,=init_Stack;ldr pc,=post_initStack;**************************;Init Gpio;**************************mov r14, pcldr pc, =post_initGpio;***************************;Enable & Set Interrupt;***************************mrs r1, CPSRbic r1, r1,#0x40msr CPSR_c, r1ldr r1, =ICMRldr r2, =init_ICMRstr r2,[r1]ldr r1, =FIQldr r2, =init_FIQstr r2, [r1];****************************;Init Keypad;****************************mov r14,pcldr pc,=post_initKey;***************************;Power Manager Sleep Status Register;***************************;ldr r1, =PSSR;mov r2, #0x30;str r2, [r1];***************************;Loop;***************************ldr r0,=postDelaypostLoopsub r0,r0,#0x1cmp r0,#0x0bne postLoopldr pc,=dummyOsEND;handler_IRQ.sIMPORT IRQ_Function;IMPORT ICMREXPORT FIQ_HandlerAREA FIQ_Handler,CODE,READONLY;****************************SUB LR, LR, #0x4STMFD SP!,{R0-R12,LR}BL IRQ_FunctionLDR R0,=0x41500000; by gaoLDR R1,[R0] ;by gaoLDMFD SP!,{R0-R12,PC}^;*******************************END;keypad.c#include <stdio.h>#include "register_variant.h"#define LED_CS2 (*((volatile unsigned short int *)(0x10300000))) //LED1 and LED2#define LED_CS3 (*((volatile unsigned short int *)(0x10400000))) //LED3 and LED4#define KPDK_VALUE (*((volatile unsigned char *)(0x41500008)))//Direct Keypad#define KPMK_VALUE (*((volatile unsigned char *)(0x41500020)))//Matrix Keypad#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))#define LED_VALUE (0xff)void IRQ_Function(void){char i,j; //j by gaounsigned short int kbd_buff;i = KPDK_VALUE;switch (i){case 0x40: //key-press 1LED_CS2 = 0x8079;break;case 0x02: //key-press 2LED_CS2 =0x8024;break;case 0x04: //key-press 3LED_CS2 = 0x8030;break;case 0x20: //key-press 4LED_CS2 =0x8019;break;default: kbd_buff=0x8F8F; break;}i = KPMK_VALUE ;switch (i){case 0x00: //key-press 5LED_CS2 =0x8012;break;case 0x01: //key-press 6LED_CS2 = 0x8002;break;case 0x02: //key-press 7LED_CS2 =0x8078;break;case 0x05: //key-press 8LED_CS2 =0x8000;break;case 0x10: //key-press 9LED_CS2 =0x8010;break;case 0x11: //key-press 10LED_CS2 = 0x4079;break;case 0x12: //key-press 11LED_CS2 =0x7979;break;case 0x15: //key-press 12LED_CS2 =0x2479;break;case 0x20: //key-press 13LED_CS2 =0x3079;break;case 0x21: //key-press 14LED_CS2 = 0x1979;break;case 0x22: //key-press * 15 LED_CS2 =0x1279;break;case 0x25: //key-press # 16 LED_CS2 =0x0279;break;default: break;}}//int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void button_statusFetch(void){char i = 0;unsigned short int kbd_buff;i = KPDK_VALUE ;switch (i){case 0x40: //key-press 1 LED_CS2 = 0x8079;break;case 0x02: //key-press 2 LED_CS2 =0x8024;break;case 0x04: //key-press 3 LED_CS2 = 0x8030;break;case 0x20: //key-press 4 LED_CS2 =0x8019;break;default: kbd_buff=0x8F8F; break;}}void button_statusFetch1(void){char i = 0;//unsigned short int kbd_buff;i = KPMK_VALUE ;switch (i){case 0x00: //key-press 5 LED_CS2 =0x8012;break;case 0x01: //key-press 6 LED_CS2 = 0x8002;break;case 0x02: //key-press 7 LED_CS2 =0x8078;break;case 0x05: //key-press 8 LED_CS2 =0x8000;break;case 0x10: //key-press 9LED_CS2 =0x8010;break;case 0x11: //key-press 10LED_CS2 = 0x4079;break;case 0x12: //key-press 11LED_CS2 =0x7979;break;case 0x15: //key-press 12LED_CS2 =0x2479;break;case 0x20: //key-press 13LED_CS2 =0x3079;break;case 0x21: //key-press 14LED_CS2 = 0x1979;break;case 0x22: //key-press * 15 LED_CS2 =0x1279;break;case 0x25: //key-press # 16 LED_CS2 =0x0279;break;default: break;}}void dummyOs(void){//int led_sharp;int temp=~0;int i;LED_CS2 = temp;LED_CS3 = temp;while(1){LED_CS4 = 0xff;for (i = 0; i < 8; i++){LED_CS4 = (LED_VALUE << i) -1;Delay(5);}//button_statusFetch();//Delay(10);// button_statusFetch1();// Delay(10);}}五、实验结果:程序运行时,实验箱上的八个LED灯在自左向右闪烁,当按下键盘上的按钮时,七段数码管吗会显示出对应的编码六、实验总结:通过本次实验,我锻炼了自己的操作能力,加深了对理论知识的理解,并对对中断工作方式有了初步的认识,理解了通过IRQ和FIQ两种不同的中断方式控制程序的运行的方法。
实验三中断程序设计学号 201216008 姓名孙坤专业电子信息科学与技术成绩【实验目的】(1)认识微机系统的中断特性。
(2)学习8259中断控制器的工作原理。
(3)学习8259中断控制器的应用编程。
(4)掌握使用PC机内8259的方法(5)掌握修改中断向量的方法。
【实验原理及内容】1、实验原理:我们利用IBM-PC机的8259A,利用键盘输入作为中断请求信号,通过IRQ1来申请中断。
2、实验内容:当用户每按下一次键盘上的按键时,即相当于从IRQ1端向计算机内部的8259A发送一次中断请求,该中断的服务是将“THIS IS A INTERRUPT!”显示在屏幕上。
中断10次后程序退出。
3、编程提示:1)PC微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如下表所示。
两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0A1H 两个端口。
系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。
对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
2)键盘中断注意事项PC机中使用的是编码键盘,在键盘内部有一单片机对整个键盘上的字符键、功能键、控制键和组合键进行管理,当从键盘上键入一个键时,键盘上的处理器首先向微机产生硬件中断请求(IRQ1),然后将改键的扫描码传送给主机。
而PC主机在IRQ1中断的作用下,调用INT 09硬件中断读入键盘的扫描码,并转换成ASCII码,存入键盘缓冲区。
本实验中的键盘中断处理程序必须对键盘控制器完成键盘复位 1.复位键盘控制器只需读出端口61H的内容,并将最高位置1,再写入该端口。
实验三 键盘中断实验一.实验目的1.熟练运用MT-IDE 嵌入式开发系统环境、汇编、C 语言、调试方式。
2.复习串行通信接口(SCI )的内容。
3.加强键盘中断基本原理及编程原理的理解。
4.理解运行课本中的程序代码。
5.理解“行扫描”法的原理并能进行键值识别和键值编码。
6.理解键盘接线原理图(如图3-1)。
实验箱提供一个16键键盘,用于键盘中断信号的输入。
系统提供两种接线方式: ①当将键盘接入上一排插孔时为固定接线,键盘接线原理图如图3-1所示。
②当将键盘接入下一排插孔时为手动接线,连线的位置在键盘的左边。
二.预习要求1.仔细阅读本实验指导书。
2.复习有关的键盘中断和串行通信接口(SCI )的章节。
3.熟悉GP32键盘模块的工作方法及编程。
4.根据实验内容要求编写好程序,为实验做充分地准备。
行线m 1 m 2 m 3 m 4 接MCU 的PTA 引脚三.实验设备及其连接1.PC机一台2.MT-IDE嵌入式开发系统一台3.串行通信线一根4.小键盘一个5.万用表一个四.实验内容1.理解键盘模块及键盘中断的原理。
2.运行与理解各子程序。
3.主程序运行课本的样例程序。
4.编制一个中断方式的16键键盘程序,使用“行扫描”法识别按键。
采用键盘中断方式。
PTA7-PTA4为列线(输入),定义有内部上拉电阻,PTA3-PTA0为行线(输出),没有内部上拉电阻,允许INTBIER的KBIE7-KBIE4定义为中断输入引脚。
要求按下的一个键的键值和键面定义值(键的ASCII码值)通过串口在PC方软件界面显示,同时用小灯显示按键的键面定义值(键的ASCII码值)。
键盘与MCU的PTA7-PTA0相连。
PTB7-PTB0口与小灯相连。
五.编程提示1.按照结构要求写好编程代码和注释。
2.键盘一般都是矩阵排列的,行和列分别接在MCU的I/O口上,其中列线通过设置内部上拉电阻接+5V,该端口先定义为输入端,行线直接与端口相连,该端口定义为输出端。
嵌入式Linux应用开发(中断实验指导)[★]第一篇:嵌入式Linux应用开发(中断实验指导)嵌入式Linux应用开发——中断按键点亮LED实验一、中断控制设计流程<1>由中断控制器汇集各类外设发出的中断信号,然后向CPU发出处理请求。
<2>CPU保存当前程序的运行环境,调用中断服务程序(ISR,Interrupt Service Rout)处理这些中断。
<3>在ISR中通过读取中断控制器、外设相关寄存器来识别当前中断是哪个中断,并进行相应处理。
<4>清除中断:通过读写中断控制器和外设的相关寄存器来实现。
<5>最后恢复被中断程序的运行环境(即前面保存的各个寄存器等),继续执行。
二、程序设计组成框架程序由head.s、init.c、interrupt.c、makefile四个程序模块组成head.s:初始化,设置中断模式、系统模式的栈,设置中断处理函数,设置各类异常的向量地址。
init.c:关看门狗(WATCHDOG),否则CPU会不断重启。
初始化LED、初始化外部中断、使能外部中断、设置外设中断的触发方式。
interrupt.c:设计代码根据识别出来的中断(即按键)点亮LED,然后清除中断。
写上主函数,主函数只是个不做任何工作的无限循环。
Makefile: Linux中使用make命令编译程序以提高编译效率,makefile既是make所要执行的命令。
三、程序设计结果将所编写程序通过H-JTAG烧写到实验箱中观察结果,按下按键,LED亮;再次按下按键,LED灭,循环往复。
第二篇:嵌入式linu学习心得嵌入式Linux学习心得1、Linux命令ls:查看目录-l以列表方式查看;ls –l 与ll的功能一样pwd: 查看当前的目录cd:改变当前操作目录cd /直接跳到根目录cd..回到上一级目录cat: 打印显示当前文件的内容信息mkdir:创建目录fdisk: 查看硬盘分区信息,-l以列表方式查看->代表是链接文件,类似window下的快捷方式。
河南机电高等专科学校《嵌入式系统开发》课程实验报告
系部:电子通信工程系
班级:电信1##
姓名: ######
学号: 120######
实验三按键实验(中断方式)
一.实验简介
在实验一的基础上,使用按键控制流水灯。
二.实验目的
熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。
三.实验内容
实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。
下载代码到目标板,查看运行结果。
四.实验设备
硬件部分:PC计算机(宿主机)、STM32实验板。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤
1在实验一代码的基础上,编写中断初始化代码
2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序
3编写中断服务程序
4编译代码,下载到实验板
5.单步调试
6记录实验过程,撰写实验报告
六.实验结果及测试
中断方式的按键式实验,是通过配置外部中断寄存器和中断嵌套(NVIC)控制器来实现按键按下控制LED灯亮灭。
通过按键中断打断主函数,执行LED1取反一次。
主函数初始化中断配置和LED配置,点亮LED1后一直等待中断,每中断一次,LED1取反一次。
int main(void)
{
LED_GPIO_Config();
LED1_ON;
CLI();
SEI();
EXTI_PA0_Config();
while(1)
{
}
}
中断嵌套控制寄存器的配置为中断嵌套分组1;抢占优先级0;响应优先级0 代码如下:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
外部中断按键的配置源码如下:配置PA0位中断线,并使能AFIO时钟void EXTI_PA0_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);
NVIC_Configuration();
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
产生中断后程序进入中断服务子程序,将LED1取反,并软件清除标志位,中断服务子程序如下:
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
LED1_TOGGLE;
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
七.实验总结
通过这次实验,课程知识的实用性很强,因此实验就显得非常重要,刚开始做实验的时候,由于自己的理论知识基础不好,在实验过程遇到了许多的难题,也使我感到理论知识的重要性。
但是我独立思考,进一步了解了stm32内部功能,最终解决问题,从而也就加深我对课本理论知识的理解。