嵌入式系统实验报告

更新时间:2023-09-11 10:43:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

嵌入式系统实验报告

学 号:

姓 名:

班 级:13电子信息工程 指导老师:

苏州大学 电子信息学院

2016年12月

1

实验一:一个灯的闪烁

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 --> 熄灭D3 */ Delay(1000000);

4、实验现象

通过对GPIOF8的操作,可以使LED3闪烁

5、实验总结

这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有了初步了解。

2

实验二:流水灯

1、实验要求

实现PF6-10端口所连接的5个LED灯顺次亮灭

2、电路原理图

图1 流水灯硬件连接图

3、软件分析

int main(void) {

RCC_Configuration();/* 配置系统时钟 */

GPIO_Configuration();/* 配置GPIO IO口初始化 */

for(;;) {

GPIOF->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、实验现象

LED1~LED5依次点亮,亮灭的时间间隔都为1S。

5、实验总结

本次实验对STM32开发板的GPIO端口进行进一步学习,通过程序可以实现流水灯的闪烁。

3

实验三:单级外部中断

1、实验要求

按下某个按键,触发中断,中断服务程序改变LED灯状态

2、电路原理图

图3 SW1硬件原理图

3、软件分析

int main() {

RCC_Configuration(); GPIO_Configuration(); GPIO_Write(GPIOF,0xffff); Delay(5000); while(1) { }

/* 配置系统时钟 */ /* IO口初始化 */ /* 全灭 */

if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0) /* 如果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、实验总结

通过本次实验,可以对某一状态通过外部中断,改变其当前状态。

4

实验四:多中断嵌套

1、实验要求

按下某个按键,触发中断,中断服务程序改变LED灯状态

2、电路原理图

图4 SW1,SW2,SW3硬件原理图

3、软件分析

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; //设定中断源为PA0 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //中断占优先级为0 NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel; //设定中断源为PD3 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //中断占优先级为1 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; //设定中断源为PA8 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //中断占优先级为2 void EXTI0_IRQHandler(void) {

int i=0;

if(EXTI_GetITStatus(EXTI_Line0) != RESET) {

for(i=0;i<10;i++) {

GPIO_Write(GPIOF,0xffff);

GPIO_SetBits(GPIOF, GPIO_Pin_6); /* LED1 点亮 */ Delay(0x5fFFFF);

GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1 熄灭 */ Delay(0x5fFFFF);

EXTI_ClearITPendingBit(EXTI_Line0); } } }

void EXTI3_IRQHandler(void) if(EXTI_GetITStatus(EXTI_Line3) != RESET) { { int i=0; for(i=0;i<10;i++)

5

本文来源:https://www.bwwdw.com/article/wx4h.html

Top