嵌入式系统实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二:流水灯
1
实现
2
3
int main( void)
/* PF7=0 -->点亮LED2 */
{
Delay(5000000);
RCC_Configuration();/*配置系统时钟
GPIOF->ODR=0xfeff;
*/
/* PF8=0 -->点亮LED3 */
GPIO_Configuration();/*配置GPIO IO
Delay(0x1FFFFF);
GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1熄灭*/
Delay(0x1FFFFF);
}
}
}
4
原来
5
通过本次实验,可以对某一状态通过外部中断,改变其当前状态
实验四:多中断嵌套
1
按下某个按键,触发中断,中断服务程序改变
图
3
NVIC_PriorityGroupCo nfig(NVIC_PriorityGroup_2);
Delay(5000000);
}
GPIOF->ODR = 0xff7f;}
4、实验现象
LED1~LED依次点亮,亮灭的时间间隔都为
1S。
5
本次实验对
实验三:单级外部中断
1
按下某个按键,触发中断,中断服务程序改变
2
图3
3
int mai n()
{
RCC_Configuration();/*配置系统时钟*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//中断占优先级为1
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; //设定中断源为PA8
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中断占优先级为2
void EXTI0_IRQHa ndler(void)
{
int i=0;
if(EXTI_GetlTStatus(EXTI_L in e0) != RESET)
{
for(i=0;i<10;i++)
{
GPIO_Write(GPIOF,0xffff);
GPIO_SetBits(GPIOF, GPIO_Pin_6)* LED1点亮*/
for(;;)
{Biblioteka Baidu
GPIOF->ODR = 0xfcff; /* PF8=0 -->点亮D3 */ Delay(IOOOOOO);
GPIOF->ODR = Oxffff; /* PF8=1 -->熄灭D3 */ Delay(IOOOOOO);
4
通过对GPIOF8的操作,可以使LED3闪烁
5
这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端 口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有 了初步了解。
嵌入式系统实验报告
学 号:
姓 名: 班 级:13电子信息工程
指导老师:
苏州大学 电子信息学院
2016年12月
实验一:一个灯的闪烁
1
实现PF6-10端口所连接的任意一个LED灯点亮
2
3
RCC_Configuration();/*配置系统时钟*/
GPIO_Configuration();/*配置GPIO 10口初始化*/
GPIO_Configuration();/* 10口初始化*/
GPIO_Write(GPIOF,Oxffff);/*全灭*/
Delay(5000);
while(1)
{
if(GPIO_ReadlnputDataBit(GPIOA, GPIO_Pin_8)==0) /*如果SW1 PA8=0 */
{
GPIO_SetBits(GPIOF, GPIO_Pin_6);/* LED1点亮*/
Delay(5000000);
口初始化*/
GPIOF->ODR = 0xfdff;
for(;;)
/* PF9=0 -->点亮LED4 */
{
Delay(5000000);
GPIOF->ODR = 0xffbf;
GPIOF->ODR = 0xfbff;
/* PF6=0 -->点亮LED1 */
/* PF10=0 -->点亮LED5 */
{
for(i=0;i<10;i++)
int i=0;}
4
中断优先级从高到低依次为:SW3,SW2, SW1
原来5个LED灯都处于熄灭状态,按下SW1, LED3应该闪烁10次,当其闪 烁5次后按下SW2, LED2也应该闪烁10次,当其闪烁4次后按下SW3, LED1也应该闪烁10次,则当LED1闪烁完10次后,LED2继续闪烁6次,之后LED1继续闪烁 5次。
实验五:
1
TIM2定时器将LED灯定时点亮和熄灭一定的时间
2
3
TIM_Cmd(TIM2, ENABLE);/*TIM2 enable counter*/
TIM_TimeBaseStructure.TIM_Period = 1999;
TIM_TimeBaseStructure.TIM_Prescaler = 35999;//定时时间为1s
5
通过本次实验,可以对LED状态实行中断嵌套,由以上实验现象,得出以下 结论:高中断优先级可以打断低优先级, 中断系统正在执行一个中断服务时, 有 另一个优先级更高的中断提出中断请求, 这时会暂时终止当前正在执行的级别较 低的中断源的服务程序, 去处理级别更高的中断源, 待处理完毕, 再返回到被中 断了的中断服务程序继续执行,反之,低中断优先级不可以打断高优先级。
Delay(0x5fFFFF);
GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1熄灭*/
Delay(0x5fFFFF);
EXTI_ClearITPe ndin gBit(EXTI_Li ne0);
} } }
if(EXTI_GetITStatus(EXTI_Line3) != RESET)
NVIC_I ni tStructure.NVIC_IRQCha nnel = EXTIO_IRQCha nn el;//设定中断源为PAO
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//中断占优先级为0
NVIC_I ni tStructure.NVIC_IRQCha nnel = EXTI3_IRQCha nn el;//设定中断源为PD3
1
实现
2
3
int main( void)
/* PF7=0 -->点亮LED2 */
{
Delay(5000000);
RCC_Configuration();/*配置系统时钟
GPIOF->ODR=0xfeff;
*/
/* PF8=0 -->点亮LED3 */
GPIO_Configuration();/*配置GPIO IO
Delay(0x1FFFFF);
GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1熄灭*/
Delay(0x1FFFFF);
}
}
}
4
原来
5
通过本次实验,可以对某一状态通过外部中断,改变其当前状态
实验四:多中断嵌套
1
按下某个按键,触发中断,中断服务程序改变
图
3
NVIC_PriorityGroupCo nfig(NVIC_PriorityGroup_2);
Delay(5000000);
}
GPIOF->ODR = 0xff7f;}
4、实验现象
LED1~LED依次点亮,亮灭的时间间隔都为
1S。
5
本次实验对
实验三:单级外部中断
1
按下某个按键,触发中断,中断服务程序改变
2
图3
3
int mai n()
{
RCC_Configuration();/*配置系统时钟*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//中断占优先级为1
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; //设定中断源为PA8
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中断占优先级为2
void EXTI0_IRQHa ndler(void)
{
int i=0;
if(EXTI_GetlTStatus(EXTI_L in e0) != RESET)
{
for(i=0;i<10;i++)
{
GPIO_Write(GPIOF,0xffff);
GPIO_SetBits(GPIOF, GPIO_Pin_6)* LED1点亮*/
for(;;)
{Biblioteka Baidu
GPIOF->ODR = 0xfcff; /* PF8=0 -->点亮D3 */ Delay(IOOOOOO);
GPIOF->ODR = Oxffff; /* PF8=1 -->熄灭D3 */ Delay(IOOOOOO);
4
通过对GPIOF8的操作,可以使LED3闪烁
5
这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端 口相连接的LED灯,闪烁周期为2S。通过本实验对STM32开发板的硬件原理有 了初步了解。
嵌入式系统实验报告
学 号:
姓 名: 班 级:13电子信息工程
指导老师:
苏州大学 电子信息学院
2016年12月
实验一:一个灯的闪烁
1
实现PF6-10端口所连接的任意一个LED灯点亮
2
3
RCC_Configuration();/*配置系统时钟*/
GPIO_Configuration();/*配置GPIO 10口初始化*/
GPIO_Configuration();/* 10口初始化*/
GPIO_Write(GPIOF,Oxffff);/*全灭*/
Delay(5000);
while(1)
{
if(GPIO_ReadlnputDataBit(GPIOA, GPIO_Pin_8)==0) /*如果SW1 PA8=0 */
{
GPIO_SetBits(GPIOF, GPIO_Pin_6);/* LED1点亮*/
Delay(5000000);
口初始化*/
GPIOF->ODR = 0xfdff;
for(;;)
/* PF9=0 -->点亮LED4 */
{
Delay(5000000);
GPIOF->ODR = 0xffbf;
GPIOF->ODR = 0xfbff;
/* PF6=0 -->点亮LED1 */
/* PF10=0 -->点亮LED5 */
{
for(i=0;i<10;i++)
int i=0;}
4
中断优先级从高到低依次为:SW3,SW2, SW1
原来5个LED灯都处于熄灭状态,按下SW1, LED3应该闪烁10次,当其闪 烁5次后按下SW2, LED2也应该闪烁10次,当其闪烁4次后按下SW3, LED1也应该闪烁10次,则当LED1闪烁完10次后,LED2继续闪烁6次,之后LED1继续闪烁 5次。
实验五:
1
TIM2定时器将LED灯定时点亮和熄灭一定的时间
2
3
TIM_Cmd(TIM2, ENABLE);/*TIM2 enable counter*/
TIM_TimeBaseStructure.TIM_Period = 1999;
TIM_TimeBaseStructure.TIM_Prescaler = 35999;//定时时间为1s
5
通过本次实验,可以对LED状态实行中断嵌套,由以上实验现象,得出以下 结论:高中断优先级可以打断低优先级, 中断系统正在执行一个中断服务时, 有 另一个优先级更高的中断提出中断请求, 这时会暂时终止当前正在执行的级别较 低的中断源的服务程序, 去处理级别更高的中断源, 待处理完毕, 再返回到被中 断了的中断服务程序继续执行,反之,低中断优先级不可以打断高优先级。
Delay(0x5fFFFF);
GPIO_ResetBits(GPIOF, GPIO_Pin_6);/* LED1熄灭*/
Delay(0x5fFFFF);
EXTI_ClearITPe ndin gBit(EXTI_Li ne0);
} } }
if(EXTI_GetITStatus(EXTI_Line3) != RESET)
NVIC_I ni tStructure.NVIC_IRQCha nnel = EXTIO_IRQCha nn el;//设定中断源为PAO
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//中断占优先级为0
NVIC_I ni tStructure.NVIC_IRQCha nnel = EXTI3_IRQCha nn el;//设定中断源为PD3