1、嵌入式系统实验报告嵌入式系统实验报告学 号: 姓 名: 班 级:13电子信息工程 指导老师: 苏州大学 电子信息学院2016年12月实验一:一个灯的闪烁1、实验要求实现PF6-10端口所连接的任意一个LED灯点亮2、电路原理图图1 LED灯硬件连接图3、软件分析 RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;) GPIOF-ODR = 0xfcff; /* PF8=0 - 点亮D3 */ Delay(1000000); GPIOF-ODR = 0xffff; /* PF8=1 -
2、 熄灭D3 */ Delay(1000000);4、实验现象通过对GPIOF8的操作,可以使LED3闪烁5、实验总结这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有了初步了解。实验二:流水灯1、实验要求实现PF6-10端口所连接的5个LED灯顺次亮灭2、电路原理图图1 流水灯硬件连接图3、软件分析int main(void) RCC_Configuration();/* 配置系统时钟 */ GPIO_Configuration();/* 配置GPIO IO口初始化 */ for(;) GPIO
3、F-ODR = 0xffbf; /* PF6=0 - 点亮LED1 */ Delay(5000000); GPIOF-ODR = 0xff7f; /* PF7=0 - 点亮LED2 */ Delay(5000000); GPIOF-ODR = 0xfeff; /* PF8=0 - 点亮LED3 */ Delay(5000000); GPIOF-ODR = 0xfdff; /* PF9=0 - 点亮LED4 */ Delay(5000000); GPIOF-ODR = 0xfbff; /* PF10=0 - 点亮LED5 */ 4、实验现象LED1LED5依次点亮,亮灭的时间间隔都为1S。5、实
4、验总结本次实验对STM32开发板的GPIO端口进行进一步学习,通过程序可以实现流水灯的闪烁。实验三:单级外部中断1、实验要求按下某个按键,触发中断,中断服务程序改变LED灯状态2、电路原理图图3 SW1硬件原理图3、软件分析int main() RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* IO口初始化 */ GPIO_Write(GPIOF,0xffff); /* 全灭 */ Delay(5000); while(1) if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)=0) /* 如
5、果SW1 PA8=0 */ GPIO_SetBits(GPIOF, GPIO_Pin_6); /* LED1点亮 */ Delay(0x1FFFFF); GPIO_ResetBits(GPIOF, GPIO_Pin_6); /* LED1 熄灭 */ Delay(0x1FFFFF); 4、实验现象原来5个LED灯都处于熄灭状态,按下SW1,触发中断程序,LED1点亮。5、实验总结通过本次实验,可以对某一状态通过外部中断,改变其当前状态。实验四:多中断嵌套1、实验要求按下某个按键,触发中断,中断服务程序改变LED灯状态2、电路原理图图4 SW1,SW2,SW3硬件原理图3、软件分析NVIC_Pr
6、iorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; /设定中断源为PA0NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /中断占优先级为0NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel; /设定中断源为PD3NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; /中断占优
7、先级为1NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; /设定中断源为PA8NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; /中断占优先级为2void EXTI0_IRQHandler(void)int i=0;if(EXTI_GetITStatus(EXTI_Line0) != RESET)for(i=0;i10;i+) GPIO_Write(GPIOF,0xffff); GPIO_SetBits(GPIOF, GPIO_Pin_6); /* LED1 点亮
8、*/Delay(0x5fFFFF);GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1 熄灭 */ Delay(0x5fFFFF);EXTI_ClearITPendingBit(EXTI_Line0); void EXTI3_IRQHandler(void)int i=0;if(EXTI_GetITStatus(EXTI_Line3) != RESET) for(i=0;i10;i+) GPIO_Write(GPIOF,0xffff); GPIO_SetBits(GPIOF, GPIO_Pin_7); /* LED2 点亮 */Delay(0x5fFFFF);G
9、PIO_ResetBits(GPIOF, GPIO_Pin_7);/* LED2 熄灭 */Delay(0x5fFFFF);EXTI_ClearITPendingBit(EXTI_Line3);void EXTI9_5_IRQHandler(void)int i=0;if(EXTI_GetITStatus(EXTI_Line8) != RESET)for(i=0;i PD05 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /* PD05 - JP7 WR */ GPIO_InitStructure.GPIO_Speed = GPIO_Sp
10、eed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; /* USART2 Rx - PD06 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);该程序将USART2重映射到PD05,PD06引脚4、实验现象PD05连接的是USART2 Tx,PD06连接的是USART2 Rx,通过串口调试助手就可以在电脑上面显示Program Running!5、实验总结通过本次实验,可以实现对异步通信USART2的重映射,再通过串口调试助手在电脑上显示出来。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1