还剩5页未读,继续阅读
文本内容:
嵌入式系统实验报告 嵌入式系统实验报告学:号姓名班程工息信子电31级指导老师:苏州大学院学息信子电xx年12月实验一:一个灯得闪烁
1、实验要求实现PF6—10端口所连接得任意一个LED灯点亮2、电路原理图图1LED灯硬件连接图
3、软件分析RCCConfiguration(;/*配置系统时钟*/GPIOConfiguration;*//*化始初口OIOIPG置配;;rof{;ffcfx0=RDO—FOIPG*//*3D亮点—-0=8FPDelay(1000000;GPIOF-ODR=0xffff;*//*3D灭熄>——1=8FP ;)0000001yaleD
4、实验现象通过对GPIOF8得操作,可以使LED3闪烁
5、实验总结这就是第一次使用STM32开发板,主要内容就是对IO端口进行配置,点亮与IO端口相连接得LED灯闪烁周期为2S.通过本实验对STM32开发板得硬件原理有了初步了解.实验二流水灯
1、实验要求实现PF6-10端口所连接得5个LED灯顺次亮灭2、电路原理图图1流水灯硬件连接图
3、软件分析intmain(void){RCCConfiguration;/*配置系统时钟*/置配*/;)(noitarugifnoC_OIPGGPIOIO口初始化*/for;;){GPIOF->ODR=0xffbf;/*PF6=0—-点亮LED1*/Delay(5000000;GPIOF->ODR=0xff7f;/*PF7=0-—〉点亮LED2*/Delay
(5000000);GPIOF-ODR=0xfeff;*//*3DEL亮点—-0=8FPDelay5000000);;ffdfx0=RDO〉-FOIPG/*PF9=0-->点亮LED4*/;)0000005yaleDGPIOF-〉ODR=0xfbff;/*PF10=0--〉点亮LED5*/}}
4、实验现象LED1~LED5依次点亮,亮灭得时间间隔都为1S
5、实验总结本次实验对STM32开发板得GPIO端口进行进一步学习,通过程序可以实现流水灯得闪烁 实验三:单级外部中断
1、实验要求按下某个按键触发中断中断效劳程序改变LED灯状态
2、电路原理图图3SW1硬件原理图
3、软件分析intmain{;noitarugifnoC_CCR/*配置系统时钟*/;)(noitarugifnoCOIPG*//*化始初口OIGPIOWriteGPIOF,0xffff);/*全灭*/;)0005yaleD)1(elihw{if(GPIO_ReadInputDataBitGPIOAGPIOPin8)==0)/*如果SW1PA8=0*/{;6niPOIPG,FOIPG(stiBteSOIPG*//*亮点1DELDelay0x1FFFFF;;)6niPOIPG,FOIPG(stiBteseROIPG/*LED1熄灭*/eDlay(0x1FFFFF);}}}4、实验现象原来5个LED灯都处于熄灭状态,按下SW1触发中断程序,LED1点亮
5、实验总结通过本次实验可以对某一状态通过外部中断,改变其当前状态 实验四:多中断嵌套
1、实验要求按下某个按键,触发中断中断效劳程序改变LED灯状态
2、电路原理图图4SW1SW2,SW3硬件原理图
3、软件分析NVICPriorityGroupConfig(NVICPriorityGroup_2;NVIC_InitStructure、NVICIRQChannel=EXTI0IRQChannel;//为源断中定设PA0NVICInitStructure、NVICIRQChannelPreemptionPriority=0;//中断占优先级为0NVICInitStructure、NVICIRQChannel=EXTI3IRQChannel;//设定中断源为PD3NVIC_InitStructure、NVICIRQChannelPreemptionPriority=1;//中断占优先级为1NVICInitStructure、NVICIRQChannel=EXTI95_IRQChannel;//设定中断源为PA8NVIC_InitStructure、NVICIRQChannelPreemptionPriority=2;//中断占优先级为2voidEXTI0IRQHandler(void){inti=0;if(EXTI_GetITStatus(EXTILine0)!=RESET){for(i=0;i<10;i++){GPIOWrite(GPIOF,0xffff;GPIOSetBits(GPIOFGPIOPin6;/*LED1点亮*/Delay0x5fFFFF);GPIOResetBits(GPIOFGPIOPin6;/*LED1熄灭*/Delay0x5fFFFF);EXTIClearITPendingBitEXTILine0);}}} voidEXTI3IRQHandler(void{inti=0;ifEXTIGetITStatus(EXTI_Line3)!=RESET){for(i=0;i10;i++{GPIOWrite(GPIOF0xffff;GPIOSetBitsGPIOF,GPIOPin7);/*LED2点亮*/Delay0x5fFFFF;GPIO_ResetBits(GPIOF,GPIOPin_7;/*LED2熄灭*/Delay0x5fFFFF);EXTIClearITPendingBit(EXTILine3;}}}voidEXTI95IRQHandler(void{inti=0;ifEXTIGetITStatusEXTILine8!=RESET{fori=0;i〈10;i++){GPIOWriteGPIOF,0xffff;GPIOSetBits(GPIOF,GPIOPin8);*//*亮点3DELDelay0x5fFFFF);GPIOResetBits(GPIOFGPIOPin8;/*LED3熄灭*/Delay(0x5fFFFF;EXTI_ClearITPendingBit(EXTI_Line8;}}}
4、实验现象中断优先级从高到低依次为:SW3SW2,SW1原来5个LED灯都处于熄灭状态,按下SW1LED3应该闪烁10次,当其闪烁5次后按下SW2,LED2也应该闪烁10次当其闪烁4次后按下SW3,LED1也应该闪烁10次,那么当LED1闪烁完10次后LED2继续闪烁6次之后LED1继续闪烁5次
5、实验总结通过本次实验,可以对LED状态实行中断嵌套,由以上实验现象得出以下结论高中断优先级可以打断低优先级中断系统正在执行一个中断效劳时,有另一个优先级更高得中断提出中断请求这时会暂时终止当前正在执行得级别较低得中断源得效劳程序,去处理级别更高得中断源待处理完毕再返回到被中断了得中断效劳程序继续执行反之,低中断优先级不可以打断高优先级 实验五:TIM2得根本应用1、实验要求TIM2定时器将LED灯定时点亮与熄灭一定得时间
2、电路原理图
3、软件分析TIMCmd(TIM2,ENABLE);*//*retnuocelbane2MITTIMTimeBaseStructure、TIMPeriod=1999;TIMTimeBaseStructure、TIM_Prescaler=35999;//定时时间为1svoidTIM2IRQHandler(void{TIM_ClearITPendingBit(TIM2,TIMIT_Update;GPIOWriteBit(GPIOF,GPIOPin_6BitAction1-GPIOReadOutputDataBitGPIOFGPIOPin_6);}
4、实验现象LED1灯按照1S得定时时间不断闪烁5、实验总结通过本次实验,可以实现对LED灯进行定时控制其闪烁,而不需要延时函数控制了,定时时间较为精准 实验六TIM2TIM3TIM4多定时器得应用
1、实验要求利用TIM2,TIM3TIM4定时器使LED灯以不同得频率闪烁
2、电路原理图
3、软件分析NVIC_InitStructure、NVICIRQChannel=TIM2IRQChannel;NVICInitStructure、NVICIRQChannelPreemptionPriority=0;NVICInitStructure、NVICIRQChannel=TIM3IRQChannel;NVICInitStructure、NVICIRQChannelPreemptionPriority=1;NVIC_InitStructure、NVICIRQChannel=TIM4IRQChannel;NVICInitStructure、NVICIRQChannelPreemptionPriority=2;此处比上一个实验增加了2个定时器,同时又增加了一个优先级
4、实验现象中断优先级从高到低依次为TIM2,TIM3,TIM4首先LED1以1S得定时时间闪烁5次之后LED2以2S得定时时间闪烁5次,最后LED3以3S得定时时间闪烁5次5、实验总结利用定时器可以同时使LED灯按照不同得频率闪烁,但就是为了现象明显可以加一个优先级,分别观察现象 实验七串口USART1读取CPU得得ID号
1、实验要求通过USART1读取CPU得96bitID2、电路原理图 图开发板USART原理图
3、软件分析voidGetChipIDvoid*//*DI片芯取获{;0F7FFFF1X0()*23u(*=]0[DIeuqinUpihC*//*节字高;CE7FFFF1X0()*23u*=]1[DIeuqinUpihC;)8E7FFFF1X0*23u(*=]2[DIeuqinUpihC/*低字节*/}voidUSARTConfiguration(void){USARTInitTypeDefUSARTInitStructure;USARTInitStructure、USART_BaudRate=115200;USARTInitStructure、USARTWordLength=USARTWordLength8b;USARTInitStructure、USARTStopBits=USARTStopBits1;USART_InitStructure、USART_Parity=USARTParity_No;USARTInitStructure、USART_HardwareFlowControl=USARTHardwareFlowControlNone;USARTInitStructure、USARTMode=USART_ModeRx|USARTMode_Tx;USARTInit(USART1,&USARTInitStructure);USARTITConfigUSART1USART_IT_TXEENABLE);USART_ITConfig(USART1USARTIT_RXNE,ENABLE);USARTClearFlagUSART1USARTFLAG_TC);USARTCmdUSART1ENABLE;/*EnableUSART1*/}
4、实验现象PA9连接得就是USART1TxPA10连接得就是USART1Rx,再通过串口调试助手就可以在电脑上面显示出CPU得ID以及flash容量大小
5、实验总结本次实验实现了串口与PC机得传输可以通过USART1将CPU得ID在电脑上显示出来 实验八异步通信USART2得重映射
1、实验要求实现异步通信USART2得重映射,将数据传送到PC机上
2、电路原理图图开发板USART原理图
3、软件分析voidGPIO_Configuration()*//*化始初口OI{GPIOInitTypeDefGPIOInitStructure;GPIOInitStructure、GPIOPin=GPIOPin5;/*USAR T2Tx—-PD05*/GPIO_InitStructure、GPIOMode=GPIOModeAFPP;/*PD05--JP7WR*/GPIO_InitStructure、GPIOSpeed=GPIO_Speed_50MHz;;)erutcurtStinIOIPG&DOIPG(tinIOIPG;)ELBANE,2TRASUpameROIPG(gifnoCpameRniP_OIPG*/;6niPOIPG=niPOIPG、erutcurtStinIOIPGUSART2Rx-->PD06*/GPIOInitStructure、GPIOMode=GPIOModeINFLOATING;GPIO_Init(GPIODGPIOInitStructure);GPIOPinRemapConfigGPIORemapUSART2ENABLE;}该程序将USART2重映射到PD05PD06引脚
4、实验现象PD05连接得就是USART2Tx,PD06连接得就是USART2Rx,通过串口调试助手就可以在电脑上面显示ProgramRunning!
5、实验总结通过本次实验可以实现对异步通信USART2得重映射,再通过串口调试助手在电脑上显示出来 模板内容仅供参考 。