嵌入式作业题答案.docx

上传人:b****8 文档编号:10739160 上传时间:2023-02-22 格式:DOCX 页数:27 大小:1.21MB
下载 相关 举报
嵌入式作业题答案.docx_第1页
第1页 / 共27页
嵌入式作业题答案.docx_第2页
第2页 / 共27页
嵌入式作业题答案.docx_第3页
第3页 / 共27页
嵌入式作业题答案.docx_第4页
第4页 / 共27页
嵌入式作业题答案.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

嵌入式作业题答案.docx

《嵌入式作业题答案.docx》由会员分享,可在线阅读,更多相关《嵌入式作业题答案.docx(27页珍藏版)》请在冰豆网上搜索。

嵌入式作业题答案.docx

嵌入式作业题答案

第1章嵌入式系统概述

1.什么是嵌入式系统?

嵌入式系统的组成?

答:

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

组成:

嵌入式处理器、外围设备、操作系统、应用软件。

2.典型的嵌入式处理器有哪些?

3.答:

微处理器、微控制器、DSP处理器、片上系统SOC。

4.典型的RTOS操作系统有哪些?

5.答:

嵌入式LinUX、卩CLinUX、WindoWSEmbeddedCE、WindoWSEmbeddedComPaCt7>μC/OS-II>μC/OS-III、VXWorks、eCos等。

6.列举身边的嵌入式应用产品?

7.嵌入式系统的设计可以分成四个阶段:

需求分析、架构设计和概要设计、详细设计和开发、测试反馈。

第2章COrteX-M体系结构

8.ARMCOrteX系统的处理器分为:

A、R、M。

9.ARMCOrteX-M3为32位微控制器,请问32位指的是CPlJ字长。

10.3、COrteX-M3处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始使用小端格式

11.ARMCOrteX-M3体系结构采用哈佛总线结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行进行。

12.CM3寄存器分为通用寄存器,包括R0~R15和特殊功能寄存器,包括程序状态寄存器、异常屏蔽寄存器、控制寄存器。

13.寄存器R13是堆栈指针寄存器。

14.寄存器R14是程序连接寄存器。

15.寄存器R15是程序PG

16.CM3的堆栈指针分为__MSP___=PSPrO存储器堆栈堆栈分为:

向上生长(即向高地址方向生长)的递增堆栈;向下生长(即向低地址方向生长),称为递减堆栈。

堆栈指针指向最后压入堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个数据项放入的空位置,称为空堆栈。

试判断CM3属于递减堆栈堆栈和满堆栈堆栈。

17.在CM3中记录程序状态的寄存器是=XPSR=。

都分别有些什么状态—应用状态、中断状态、可执状态。

18.PRIMASK寄存器的作用是_中断屏蔽寄存器_o

19.寄存器CONTRO的作用是控制处理器工作级别及堆栈切换。

20.CM3支持的4GB存储空间被划分成:

CODE片上RAM片上外设、片外RAM片外外设、内核私有6个区域。

21.CM沖有一个位绑定区分别位于片上RAM和片上外设区,其大小为1M字节,由32M字节空间的位绑定别名区来访问。

22.CM3支持1£种系统异常,和240种外设中断。

23.SySTiCk是一个___24位的系统定时器。

通常的功能是_作为操作系统时钟__。

第3章STM32基础及最小系统设计

24.STM32F103RBT7芯片的在片Flash存储器有128KB字节,在片SRAM存储器有20KB字节。

25.STM32F103RBT7芯片工作时电源电压是3.3V。

26.STM32最小系统电路包含:

MCU芯片、电源电路、时钟电路、复位电路和启动设置电路。

27.连接在APB1上的设备有:

电源接口、备分接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、WatChDOg、Timer2、Timer3和Timer4。

28.连接在APB2上的设备有:

UART1、SPI1、TimerI、ADC1、ADC2、I/O(PA〜PE,第二功能I/O)。

29.假定STM32F103单片机外部振荡器是8MHz。

执行下列程序。

voidBSP=Init(VOid)

{

RCC=HSECOnfig(RCC=HSE=ON);

HSEStartUPStatUS=RCC=WaitFOrHSEStartUP();

if(HSEStartUpStatus==SUCCESS)

{

RCC=PCLK2Config(RCC=HCLK=Div1);//PCLK2=HCLK=72MHz

RCC=PCLK1Config(RCC=HCLK=Div2);//PCLK1=HCLK/2=38MHZ

RCC=HCLKCOnfig(RCC=SYSCLK=DiV1);//HCLK=SYSCLK=72MHZ

RCC=PLLCOnfig(RCC=PLLSource=HSE=Div1,RCC=PLLMUl=9);//PLLCLK=8*9=72MHzRCC=PLLCmd(ENABLE);//EnabIePLL

While(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//等待PLL就绪

RCC_SYSCLKCOnfig(RCC_SYSCLKSOUrCe_PLLCLK);//设置PLL作为时钟源

WhiIe(RCC_GetSYSCLKSource()!

=0x08);//等PLL时钟源启动就绪

}

}

请问,上述程序执行后,HCLK=72MHZ,PCLKI=38MHZ,PCLK2=72MHZ,

30.利用COrteX-M3内核的24位定时器(SySTiCk),定时10ms,请计算初值并写出初始化程序,SySTiCk配置函数:

uint32_tSySTiCk_COnfig(Uint32_tticks)o假设HCLK的时钟是72MHz。

1

答:

初值=720000-1oN10ms,共中N是计数的次数,由于SySTiCk是减计数器,因此初值为720000-1。

72M

VoidSySTiCkInit(VOid)

{

SySTiCk_COnfig(720000-1);

}

第5章通用I/O结构及应用

31.STM32F103微控制器的I/O端口有PA~PG,每组多达16端口。

32.STM32F103微控制器的I/O端口的功能:

通用输入/输出、中断功能、复用功能和重映射功能。

33.请编程实现如图所示4只发光二极管流水。

 

/********************************************************/

/*说明:

PC8-PC15连接LED

********************************************************/

#include"stm32f10x.h"

#include"system_stm32f10x.h"

#include"stm32f10x_gpiO.h"

#include"stm32f10x_rcc.h"

VOidDeIayMs(intn);

/********************************************************/

intmain(vOid)

{

GPIO」nitTypeDefGPIO_InitStrUCture;

RCC_APB2PeriphClOckCmd(RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStrUCtUre.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9

|GPIO_Pin_10|GPIO_Pin_11;

GPIO_InitStrUCtUre.GPIO_MOde=GPIO_MOde_OUt_PP;

GPIO_InitStrUCtUre.GPIO_SPeed=GPIO_SPeed_50MHz;

GPIO_Init(GPIOC,&GPIO」nitStrUCtUre);

GPIO_Write(GPIOC,OXFFFF);

34.请编程实现键控蜂鸣器,当按键KEYI按下时,蜂鸣器发声,再按下不发声,按键采用中断方式控制

*******************************************************

/*说明:

KEY1->PA0;Buz->PB4

按键采用中断,在中断服务程中取反PB4

*******************************************************

#include"stm32f10x.h"

#include"system_stm32f10x.h"

#include"stm32f10x_gpio.h"

#include"stm32f10x_rcc.h"

#include"stm32f10x_exti.h"

#include"misc.h"

中断第二级配置

***************

**/

voidNVIC_COnfigUration(void)

{

NVIC_InitTyPeDefNVIC_InitStrUCture;

NVIC_InitStrUCtUre.NVIC_IRQChanneI=EXTI0_IRQn;

NVIC_InitStrUCtUre.NVIC_IRQChanneIPreemPtiOnPriority=0;

NVIC_InitStrUCtUre.NVIC_IRQChanneISUbPriOrity=0;

NVIC_InitStrUCtUre.NVIC_IRQChanneICmd=ENABLE;

NVIC_Init(&NVIC—lnitStructure);

}

中断第三级配置

****************

**/

voidEXTI_COnfigUration(void)

{

EXTI_InitTypeDefEXTI_InitStrUCtUre;

GPIO_EXTILineCOnfig(GPIO_PortSoUrceGPIOA,

GPIO_PinSoUrce0);

EXTLInitStrUCtUre.EXTLLine=EXTI_Line0;

EXTI_InitStrUCtUre.EXTI_MOde=EXTI_MOde_InterrUpt;

EXTLInitStrUCtUre.EXTLTrigger=EXTI_Trigger_Falling;

EXTLInitStrUCtUre.EXTLLineCmd=ENABLE;

EXTI_Init(&EXTI_lnitStrUCtUre);

}

按键初始化

**********************

**/

voidkey_init(VOid)

{

GPIO_lnitTypeDefGPIO」nitStrUCtUre;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_lnitStrUCtUre.GPIO_Pin=GPIO_Pin_0;

GPIO_lnitStrUCtUre.GPIO_Mode=GPIO_Mode_IPU;

GPIO_lnitStrUCtUre.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStrUCtUre);

}

蜂鸣器端口初始化

****************

**/

voidBUZZer_Init(VOid)

{

GPIO_InitTypeDefGPIO」nitStrUCtUre;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_PinRemaPCOnfig(GPIO_Remap_SWJ_NOJTRST,ENABLE);

//PB4重映射

//BUzzer

GPIO_InitStrUCtUre.GPIO_Pin=GPIO_Pin_4;

GPIO_lnitStrUCtUre.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_lnitStrUCtUre.GPIO_Mode=GPIO_Mode_OUt_PP;

GPIO_Init(GPIOB,&GPIO_InitStrUCtUre);

GPIO_ResetBits(GPIOB,GPI0_Pin_4);〃置低电平,关闭蜂鸣器}

intmain(void)

{

key_init();

BUZZer_Init();

__set_PRIMASK(0x00);//一级开关使能

NVIC_COnfigUration();//二级开关使能

EXTI_COnfigUration();//三级开关使能

while

(1){;}

 

}

/********************************************************/

VoidEXTIO-IRQHandIer(Void)

{

if(EXTI_GetITStatUS(EXTI_LineO)!

=RESET)

{

GPIO_WriteBit(GPIoB,

GPI0_Pin_4,(BitACtion)(1-GPI0_Read0utputDataBit(GPIoB,GPIO_Pin_4)));;

}

EXTI_CIearITPendingBit(EXTI_Line0);

}

第6章定时器结构及应用

35.STM32F103定时器是16位定时器。

36.STM32F103的基本定时器有:

TIM6、TIM7,通用定时器有:

TIM2~TIM5,高级定时器有:

TIM1、TIM8。

37.STM32F103定时器的主要功能有:

定时功能、输入捕获功能、输出比较功能(PWM)等。

38.已知系统时钟为72MHz,采用定时器TIM1产生周期为100ms的定时时间间隔并通过LED发光二极管指示定时过程,发光二极管与PC15相连。

分析:

TIM1的时钟为72MHz,定时100ms,需要计数7.2X106,已超出计数值范围,因此必须对输入时钟信号进行分频。

分频系数有多种选择,

只要在计数范围内即可,只是计数值越大,分频率越高。

对输入时钟进行状态反转。

360分频,则计数值为2000,程序采用中断的方式,计时时间到LED

/*****************************************************

{

说明:

已知系统时钟为72MHz,采用定时器TIM1产生周期为100ms

/*

的定时时间间隔并通过LED发光二极管指示定时过程。

TIM1Configuration:

OUtPUtCOmPareTimingMode:

*****************************************************/

TIMICLK=72MHz,PreSCaIer=360,period=2000

#include"stm32f10x.h"

*/

#include"system_stm32f10x.h"

TIM_TimeBaSeInitTyPeDefTIM_TimeBaSeStrUCture;

#include"stm32f10x_GPIO.h"

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

#include"stm32f10x_tim.h"

TIM_TimeBaSeStrUCtUre.TIM_PeriOd=2000;//初值

#include"stm32f10x_rcc.h"

TIM_TimeBaSeStrUCtUre.TIM_PreSCaler=360-1;//时钟预分频值

#include"misc.h"

TIM_TimeBaSeStrUCtUre.TIM_ClockDivision=TIM_CKD_DIV1;

/*****************************************************

TIM_TimeBaSeStrUCtUre.TIM_COUnterMOde=

说明丄ED端口初始化PA15接LED.PD2控制锁存器

TIM_COUnterMOde_Down;//计数方式

*****************************************************/

TIM_TimeBaSeInit(TIM1,&TIM_TimeBaSeStrUCture);

voidGPIO_COnfigUration(void)

TIM_ITCOnfig(TIM1,TIM」T_UPdate,ENABLE);//使能中断(三级)

{

TIM_Cmd(TIM1,ENABLE);

GPIO_InitTyPeDefGPIO_InitStrUCture;

}

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

voidNVIC_COnfigUration()//使能第二级中断开关

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);

{

GPIO_InitStrUCtUre.GPIO_Pin=GPIO_Pin_15;

NVIC_InitTyPeDefNVIC_InitStrUCture;

GPIO_InitStrUCtUre.GPIO_Mode=GPIO_Mode_OUt_PP;

NVIC_InitStrUCtUre.NVIC_IRQChanneI=TIM1_UP_IRQn;

GPIO_InitStrUCtUre.GPIO_SPeed=GPIO_SPeed_50MHz;

NVIC_InitStrUCtUre.NVIC_IRQChanneIPreemPtiOnPriority=0;

GPIO_Init(GPIOC,&GPIO」nitStructure);

NVIC_InitStrUCtUre.NVIC_IRQChanneISUbPriOrity=0;

GPIO_Write(GPIOC,OXFFFF);

NVIC_InitStrUCtUre.NVIC_IRQChanneICmd=ENABLE;

/*************^下面^为74HC573存控制H****************/

NVIC_Init(&NVIC—lnitStructure);

GPIO_InitStrUCtUre.GPIO_Pin=GPIO_Pin_2;

}

GPIO」nitStructure.GPIO_Mode=GPIO_Mode_OUt_PP;

intmain()

GPIO」nitStructure.GPIO_Speed=GPIO_SPeed_2MHz;

{

GPIO」nit(GPIOD,&GPIO_InitStrUCture);

GPIO_COnfigUration();

//NLE置高,打开锁存器74HC573

NVIC_COnfigUration();

GPIO_SetBitS(GPIOD,GPIO_Pin_2);

TIM1_COnfigUration();

}

while

(1)

voidTIM1_COnfigUration(void)

}

第7章USART结构及应用

39.常见的短距离异步串行通信协议标准有:

RS232标准、RS485标准。

40.在异步串行通信中RS232标准的硬件连线主要有:

RX(数据接收线)、TX(数据发送)、GND(地线)组成。

41.STM32F103中的USART模块支持:

同步串行数据收和异步串行数据收发。

42.STM32F103中的USART模块支持:

全双工异步通信、同步单向通信和半双工单线通信。

43.STM32F103的USART模块程序初始化中主要涉及:

波特率、数据位、校验、停止位等设置。

44.STM32F103的USART模块的波特率最高可达:

4.5Mbit∕s。

45.请利用STM32F103的USART模块实现与计算机之间通信,STM32F103发送:

"Pleaseinputdata!

:

"到计算机,计算机利用串口调试软件接

收数据,然后计算机发送数据到STM32F103,并通过开发析上的LCD显示出接收的数据。

分析:

如图所示,采用串口2(USART2),用到PA2、PA3两个管脚,STM32F103的USART配置成波特率:

9600bit/s,数据位8位,停

止位1位,校验位无。

数据接收采用中断方式进行。

whiIe

(1)

{

LCD_DiSPIayStringLine(Line4,"ReCeiveData:

");

LCD_DiSPIayStringLine(Line5,RxBUffer);

}

}

第8章SPI结构及应用

46.SPI主从设备需共享时钟线,因此称为:

同步串行通信总线。

47.SPI总线采用主从连接架构,通信双方分为:

主控端(MaSter)和从动端(SIaVe)。

48.SPI接口的硬件连接线共有4根,分别是:

设备片选线SS、时钟信号线SCLK、串行输出数据线MoSl、串行输入数据线MISo

49.STM32F103中的SPI总线通信中数据帧格式有:

8位数据和16位数据。

50.STM32F103中的SPI总线支持硬件CRC校验以实现可靠通信。

51.

请利用STM32F103的SPI总线向LED显示模块发送显示信息,在LED上显示“01234567”。

如图所示硬件连接。

第11章ADC结构及应用

52.A/D转换是将:

连续变化的模拟信号变为对应的离散数字信号。

53.模拟信号转化为数字信号包含三个关键步骤:

采样、量化和编码。

54.A/D转换的主要技术指示有:

位数、采样速率、分辨率等等。

55.STM32F103的ADC模块是一个12位逐次逼近型ADC,包含18个通道,可测量16个外部信号和2个内部信号。

56.当STM32F103的ADC模块被测电压范围是0~3.3V连续变化的模拟信号,ADC转换的参考电压是3.3V,请问当被测信号为3.3V时对应

的转换后的数字量是:

111111111111十进制4096,十六进制OXfff),当被测信号为0V时对应的数字量是:

000000000000。

当转换后的数字量为100000000000(十进制2048,十六进制0x800)时对应的模拟电压为:

1.65V。

57.请利用STM32F103的ADC模块转换如图所示模拟电压并能过LCD显示器显示被测信号电压值。

分析:

PBo对应ADCI模块的8号通道。

拟采用软件触发采样,通过查询标志位,获取转换结果。

程序流程图如上图所示

#include"stm32f10x.h"

#include"stm32f10x_conf.h"

#include"stdio.h"

#include"lcd.h"

#include"delay.h"

voidadc_init(Void)

{

GPIO_InitTyPeDefGPIO_InitStrUCture;

ADC_InitTyPeDefADC_InitSt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1