《嵌入式技术入门与实战(基于STM32)》(尹静)思考与练习题及答案_第1页
《嵌入式技术入门与实战(基于STM32)》(尹静)思考与练习题及答案_第2页
《嵌入式技术入门与实战(基于STM32)》(尹静)思考与练习题及答案_第3页
《嵌入式技术入门与实战(基于STM32)》(尹静)思考与练习题及答案_第4页
《嵌入式技术入门与实战(基于STM32)》(尹静)思考与练习题及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《嵌入式技术入门与实战(基于STM32)》思考与联系题答案(仅理论部分)第1章ARMCortex-M4处理器有哪些优点?答案:具体优点有:具有丰富的指令集:包括了单指令多数据的指令集(SIMD)、扩展的单周期32位的乘法累加器(MAC)、饱和运算指令以及单精度浮点运算指令具有浮点运算能力:Cortex-M4处理器内核中有独立的浮点单元(FPU),支持单精度浮点数的运算:加、减、乘、除、乘加、平方根…。具有较大的存储空间:片上闪存高达1M字节,内嵌SRAM高达196K字节,还具有灵活的静态存储控制器(FSMC)。运行速度快。以高速系统时钟频率168MHz运行时,可达到210DMIPS的处理能力。更高级的外设。Cortex-M4新增了照相机接口、加密处理器,USB高速OTG接口等外设功能,还具有更快的通信接口、更高采样率以及带FIFO的DMA控制器。具有嵌入式中断向量控制器NVIC,同样支持咬尾中断和晚到中断机制,因为多了对浮点运算的支持,在中断响应和退出时增加了对FPU扩展寄存器的保护。超低功耗。具有深睡眠模式以及多达240个唤醒中断的唤醒中断控制器,可关闭FPU降低功耗。具有高度可配置性:多达240个中断及其可编程的优先级、存储器保护单元(MPU)、JTAG和SWD调试接口是可选的,由芯片制造商决定是否使用;兼容性强,不仅兼容Cortex-M3,和其他的ARM处理器也具有很强的兼容性。ARMCortex-M4处理器由哪些部分组成?答案:Cortex-M4处理器包含处理器内核、嵌套向量中断控制器(NVIC)、SysTick定时器以及可选的浮点单元(FPU)。除了这些以外,处理器中还有一些内部总线系统、可选的存储器保护单元(MPU)以及支持软件调试操作的一组部件。STM32MCU系列产品有哪些分类?其中STM32F407属于哪一类?答案:SMT32MCU是我们常说的STM32器件,基于Cortex-M内核设计,可以分为:无线系列MCU、超低功耗系列MCU、主流MCU以及高性能MCU。高性能MCU高性能MCU。根据STM32芯片的命名规则说明STM32F407ZGT6包含了哪些芯片信息?答案:F表示基础型,407表示高性能,带DSP和FPU,Z表示该芯片引脚数为144个,G表示内存容量为1024Kb,T表示封装为QFP,6表示温度范围-40~85摄氏度,从STM32F407内部功能结构看,APB1和APB2下分别挂接哪些片上外设?答案:需要学会查看内部结构图,或者了解查看芯片手册对应知识点,可以了解到,APB1下挂接外设有:TIM2、TIM3、TIM4、TIM5、TIM12、TIM13、TIM14,USART2、USART3、UART4、UART5等,具体如图所示:STM32F4有哪些时钟源信号?时钟频率分别是多少?答案:STM32F4有5个时钟源:HSI、HSE、PLL、LSI、LSE,HSI、HSE以及PLL是高速时钟源,LSI和LSE是低速时钟源。时钟频率:HSI是高速内部时钟,由内部16MHzRC振荡器生成HSE是高速外部时钟,频率范围为4MHz~26MHzPLL为锁相环倍频输出,STM32F4具有两个PLL:主PLL和专用PLL,主PLL(MainPLL)由HSE或HSI振荡器提供时钟信号,并具有两个不同的输出时钟:第一个用于生成高速系统时钟(最高达168MHz),第二个用于生成USBOTGFS的时钟(48MHz)、随机数发生器的时钟(48MHz)和SDIO时钟(48MHz)。LSI是低速内部时钟,时钟频率在32kHz左右。LSE是低速外部时钟,接频率为32.768kHz的晶振或陶瓷谐振器。STM32F4的系统时钟的时钟源有哪些?答案:系统时钟的时钟源有:HSI、HSE、PLLCLK,可以从图1-9中看到,SYSCLK是通过RTCClockMux多选器选择的,因此主要是这三个来源,其中PLLCLK又可以来源于HIS和HSE。请设计实现STM32F4的系统时钟为84MHz。答案:选择HSE为PLL时钟源,HSE时钟频率为8MHz,经过4分频->168倍频->4分频,PLL可输出84MHz。请说明STM32F4能输出哪些时钟给外围电路?答案:用户可通过可配置的预分配器(从1到5)向MCO1引脚(PA8)输出四个不同的时钟源:HSI、LSE、HSE、PLL。也可以通过可配置的预分配器(从1到5)向MCO2引脚(PC9)输出四个不同的时钟源:HSE、PLL、系统时钟(SYSCLK)、PLLI2SCLK。请分别说明STM32F4的各总线时钟最大频率是多少?答案:STM32F4的AHB最大时钟为168MHz,APB2高速时钟最大频率为84MHz,而APB1低速时钟最大频率为42MHz。设计STM32F4的电源电路需考虑哪些问题?答案:在设计STM32F4的电源电路时,需要考虑以下几个问题:1.输入电压范围:确定输入电压的范围,以确保电源电路能够正常工作。STM32F4的输入电压范围通常为2.0至3.6V。2.输出电压稳定性:确保电源电路能够提供稳定的输出电压,以满足STM32F4的电源需求。可以使用线性稳压器或开关稳压器来实现稳定的输出电压。3.功耗和效率:考虑电源电路的功耗和效率,以优化系统的整体性能。低功耗和高效率的电源电路可以减少能量消耗并延长电池寿命。4.噪声和干扰:考虑电源电路中的噪声和干扰,以确保STM32F4能够正常工作。可以使用滤波器、屏蔽和布局优化等方法来减少噪声和干扰。5.保护电路:考虑电源电路的保护功能,以防止过流、过压和短路等情况对STM32F4造成损坏。可以使用熔断器、过流保护器件和过压保护器件等来实现保护功能。6.电源管理:考虑电源管理功能,以实现电源的自动开启和关闭,以及电源状态的监测和管理。可以使用电源管理IC或微控制器内置的电源管理功能来实现电源管理。7.PCB布局和布线:考虑电源电路的PCB布局和布线,以确保电源电路的稳定性和可靠性。合理的布局和布线可以减少噪声和干扰,并提高电源电路的性能。8.温度和散热:考虑电源电路的温度和散热问题,以确保电源电路在正常工作温度范围内运行。可以使用散热器、散热片和热敏电阻等来实现温度控制和散热。以上是在设计STM32F4的电源电路时需要考虑的问题,根据具体的应用需求和系统要求,可以进一步细化和优化电源电路设计。第2章STM32CubeIDE有哪些特点可以让你选择其进行STM32的开发?答案:通过学习CubeIDE的使用,可谈谈自身的体会,比如:集成了CubeMX,可图形化进行配置,快速构建工程,采用HAL库函数开发,能够跟进官网更新最新的HAL库等特点。如何理解HAL库的作用?答案:STM32CubeHAL是一款STM32抽象层嵌入式软件,和标准库对比起来,HAL库更加的抽象,HAL库将每个外设封装为一个对象,简单来说,对于芯片底层硬件的开发不需要开发者对寄存器进行一一配置,仅需要掌握其封装的HAL库函数的使用方法,就能够快速的开展开发,也大大降低了初学者开发的难度。同时HAL库提供了一整套一致的中间件组件,如RTOS、USB、TCP/IP、图形等等。STM32代码下载方式有哪几种,各有有什么优缺点?答案:程序下载有多种方法:USB、串口、JTAG、SWD等USB、串口下载:优点:硬件上不需要下载器,下载方便,目前很多笔记本电脑都不支持串行接口,因此目前市面上大部分STM32开发板提供了串口转USB接口电路,缺点:只能下载代码,不能实时跟踪调试代码。JTAG、SWD:,通过仿真器连接电脑端下载,优点:支持在线调试,能够通过实时调试定位代码问题。缺点:需要额外使用仿真器。串口下载时什么情况下需要安装CH340驱动?答案:如果电脑端没有串行接口,可通过USB接口进行下载,这个时候就需要下载安装CH340驱动,CH340G芯片将串口转USB接口。STM32有哪些调试接口,引脚数目分别是多少?答案:STM32支持两种调试接口:串行接口(SW)和JTAG调试接口,串行线调试端口(SW-DP)提供2引脚(时钟+数据)接口,JTAG调试端口(JTAG-DP)提供5引脚标准JTAG接口STM32F407芯片的调试接口的引脚封装是如何的?答案:可以查看芯片手册,了解到其调试接口引脚封装如下:STM32CubeIDE开发平台如何检查仿真器固件版本是否合适?答案:首先连接好硬件设备,ST-LINK仿真器通过USB线连接到电脑USB口;然后在STM32CubeIDE菜单栏选择Help->ST-LINK更新第3章简述GPIO有哪几种工作模式。答案:根据数据手册中列出的每个I/O端口的特性,可通过软件将通用I/O(GPIO)端口的各个端口位分别配置为多种模式:输入模式:浮空、输入上拉、输入下拉、模拟功能输出:开漏输出、推挽输出、复用功能推挽、复用功能开漏分析推挽输出和开漏输出的区别。答案:推挽模式下,输出寄存器上的0激活N-MOS,而输出寄存器上的1将激活P-MOS。因此,推挽模式可以输出高,低电平,连接数字器件。开漏输出模式下,输出寄存器上的0激活N-MOS,输出低电平,而输出寄存器上的1将端口置于高阻状态(P-MOS从不被激活)。一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平,比如输出5V。对于任务1,修改流水灯功能为全亮和全灭,调用HAL_GPIO_TogglePin函数实现。答案:见工程练习3-3分析几种输入模式的区别,分别适合哪些应用场景?答案:GPIO被配置为上拉、下拉和浮空输入时,主要区别是:上拉输入:上拉电阻开关闭合接VDD,下拉电阻开关打开,在引脚没有外部输入时,引脚被上拉至高电平,且保持高电平状态。下拉输入:下拉电阻开关闭合接GND,下拉电阻开关打开,在引脚没有外部输入时,引脚被下拉至低电平,且保持低电平状态。浮空输入:输入引脚即不接高电平,也不接低电平。通俗讲就是让管脚什么都不接,浮空着。由外部输入决定引脚的状态。当然,一般实际运用时,引脚不建议悬空,易受干扰。最后还有一种输入模式是模拟输入,在模拟输入模式中,输出缓冲器被禁止,禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。如传送给ADC模块,由ADC采集电压信号。所以使用ADC外设时,必须设置为模拟输入模式。对于任务2的功能,完善按键检测函数,添加函数输入变量mode,输入变量mode为2时支持长按检测。当按键时长超过两秒时返回键值5~8。按键时长超过五秒时返回键值9~12。并能够控制对应LED灯的状态。答案:见工程练习3-5请采用位带操作的方法,实现按键的位带读取代码。答案:见工程练习3-6

第4章请问STM32F407xx系列芯片中哪些异常是编号为负的内核异常,其优先级如何?答案:复位(Reset)、不可屏蔽中断(NMI)、硬件错误(Hardfault),优先级分别为-3、-2、-1,这些异常的优先级最高,且优先级别固定不可更改。STM32F407xx中EXTI线总共有几条,其与GPIO如何映射?答案:STM32F407xx共有23条EXTI,其中:EXTI0~15映射到GPIOx_Pin0~GPIOx_Pin15,映射关系可参见图4-2;本章任务中,假设4个按键同时被按下,按照任务中的配置,如何响应中断?答案:任务,4个按键KEY1~4分别对应中断线EXTI4、EXTI3、EXTI2、EXTI0,根据优先级代码分析:/*EXTIinterruptinit*/HAL_NVIC_SetPriority(EXTI0_IRQn,0,2);HAL_NVIC_EnableIRQ(EXTI0_IRQn);HAL_NVIC_SetPriority(EXTI2_IRQn,0,3);HAL_NVIC_EnableIRQ(EXTI2_IRQn);HAL_NVIC_SetPriority(EXTI3_IRQn,0,4);HAL_NVIC_EnableIRQ(EXTI3_IRQn);HAL_NVIC_SetPriority(EXTI4_IRQn,0,5);HAL_NVIC_EnableIRQ(EXTI4_IRQn);其中抢占优先级都为0,响应优先级KEY1~4依次为5、4、3、2,KEY4优先级最高,因此优先响应KEY4。4、使用外部中断实现跑马灯,并且体现高优先级中断打断低优先级中断操作。答案:见工程练习4-4第5章串口波特率是由哪个寄存器决定的?请详细说明寄存器的配置值跟波特率的关系。答案:串口波特率是由波特率寄存器(USART_BRR)来进行配置的,该寄存器分为两个部分:位15:4DIV_Mantissa[11:0]:USARTDIV的尾数,这12个位用于定义USART除数(USARTDIV)的尾数;位3:0DIV_Fraction[3:0]:USARTDIV的小数,这4个位用于定义USART除数(USARTDIV)的小数。这两部分参数用于计算波特率分频系数USARTDIV=DIV_Mantissa+(DIVFraction/16);因此波特率寄存器(USART_BRR)可以计算出USARTDIV,由此可以计算出波特率:Tx/Rxbaud=两个MCU通过USART串口互联,请说明如何连接两个串行通信的设备?答案:RXD是数据输入端口,用于数据接收;TXD是数据发送端口,用于数据发送。对于两个芯片之间的连接需要共地,同时TXD和RXD交叉连接。的交叉连接是:芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行正常的TTL电平通信了。微控制器和PC端USB口的串口硬件连接是如何实现的?答案:如图所示:微控制器串口引脚与CH340转接芯片连接,通过CH340将普通的串口设备直接升级到USB总线,从而可以与PC端的USB接口连接,进行串口通信。具体引脚连接如图5-4所示。结合按键的功能,请设计实现通过按键启动和关闭串口收发数功能。答案:见工程练习5-4通过串口实现两块STM32实验板的通信。答案:见工程练习5-5第6章1、任务1中,修改相关参数,实现定时器周期为200ms。答案:首先,根据周期为200ms可以计算一下频系数PSC和自动装载值ARR的取值,任务中,定时器输入时钟源选择内部时钟源,时钟频率为84MHz,可以设置PSC==840-1,自动装载值ARR=20000-1,那么根据周期计算公式:TCNT=(ARR+1)*TCK_CNT=(ARR+1)(PSC+1)/FCK_PSC=20000*840/84MHz=200ms然后,修改代码中涉及的PSC和ARR的取值:函数MX_TIM3_Init(void)中,修改:htim3.Init.Prescaler=840-1;htim3.Init.Period=20000-1;这样就可以实现200ms周期的定时,可运行代码查看是否符合预期。2、任务2中,修改有效极性参数OCPolarity,会有什么样的实验效果?答案:OCPolarity为有效电平,任务2中配置为“TIM_OCPOLARITY_LOW”表示低电平有效,在PWM模式1下,如果计数方式为向上计数,计数值CNT<比较值CCR1时,输出有效电平为低电平,否则输出高电平,如果修改该参数为高电平有效,那么输出的PWM高低电平和原来的反一反,如图6-18所示3、任务2中配置的PWM信号周期为多少,如果要输出50%占空比,那么比较值CCRx需配置为多少?修改其占空比的代码如何实现?答案:任务2中,配置ARR=500-1,PSC=84-1,时钟频率为84MHz(挂接在APB1下,并为其2倍频)因此周期为500*84/84MHz=2ms。如果要输出占空比为50%,CCRx可设置为250,即ARR的一半。具体修改代码如下:PWMValue=250;__HAL_TIM_SetCompare(&htim14,TIM_CHANNEL_1,PWMValue);//更改PWM的CCR比较值4、任务3中,检测按键S4脉宽测量可以通过TIM5CH1输入捕获实现?是否可以用同样的方法测量按键S1、S2、S3的脉宽,请说明原因。答案:S4按键对应引脚PA0,可通过查看芯片数据手册datasheet可以找到PA0复用功能可作为TIM5CH1的输入,如图6-26所示,因此可以采用TIM5CH1输入捕获的功能实现S4按键的脉宽测量。而任务中使用的按键S1、S2、S3的引脚分别对应PE4、PE3、PE2,查看芯片数据手册如下图所示:图中,三个引脚的复用功能都没有对应定时器输入捕获的通道,因此,不可以直接采用输入捕获功能区测量其脉冲宽度。5、采用定时器测量输出的PWM信号的周期和占空比的实现方法?答案:将任务2和任务3的功能结合起来,任务2输出的PWM可以作为任务3的输入,通过输入捕获进行PWM信号高低电平持续时间的测量,并最终计算出周期和占空比。第7章1、STM32F4xx系列芯片内总共有多少个ADC和DAC,其时钟总线分别是哪个总线,其时钟如何计算?答案:STM32F4xx系列芯片上有3个ADC模块,2个DAC转换器。3个ADC模块挂接在APB2总线,其时钟是对APB2时钟频率进行预分频得到,预分频值由ADC通用控制寄存器ADC_CCR中的ADCPRE位决定,取值有:2/4/6/8分频。例如,ADC任务中,APB2设置为最大时钟频率84MHz,分频值为4分频,因此,ADC的时钟频率为21MHz。2个DAC模块挂接在APB1总线上,DAC的工作时钟信号就是APB1总线时钟。2、ADC单通道转换方式有哪些?这些转换方式的区别在哪里?答案:ADC单个通道的转换支持单次转换和连续转换。在单次转换模式下,ADC只执行一次转换。完成所选通道的转换之后,如果转换了规则通道,转换数据存储在16位ADC_DR寄存器中,如果转换了注入通道,转换数据存储在16位ADC_JDR1寄存器中,如果开启中断,则产生中断,然后ADC停止。在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。每一次转换完成数据存储方式和中断同单次转换。3、如图7-12的串口打印结果,ADC的转换结果为4041时,如何计算验证其模拟输入结果就是3.2551V?答案:满量程为12位(最大值4095),参考电压为3.3v,因此有:数字最大值/参考电压=当前转换结果/模拟输入电压4095/3.3=4041/模拟输入电压,可计算得模拟电压为3.2565V,和实际的电压3.2551V基本接近。4、任务1中ADC的转换式通过软件设置启动的,请实现通过定时器触发ADC的转换。答案:结合第六章内容,代码中开启定时器中断,周期性的进入中断触发ADC,注意定时器周期一定要大于ADC转换的总时间,预留足够的转换时间。5、DAC转换的启动触发方式有有些?任务2中采用何种方式启动DAC转换?答案:DAC转换触发方式有:软件触发,外部事件触发,其中外部事件触发有:定时器触发、外部中断线触发,具体可查看图7-14,对于不同的芯片可查看各自的芯片手册中DAC通道的框图中关于触发部分的输入源。任务2中,采用软件触发启动DAC转换。6、请分析图7-23中串口打印的结果,并给出DAC转换的数字值和模拟值的关系。答案,以第三行打印信息2800为例,2800为代码中设置的DAC数字值,DAC的模拟输出引脚连接到了ADC模块的模拟输入,并经过ADC后打印数字值为第四行的“ADC转换输出:2738”,这两个值基本接近,符合预期,将2738换算成模拟值打印到串口第五行“模拟电压值:2205.9mv”,根据DAC的转换关系,我们可以验证一下这个模拟值是否符合预期:DAC可见两个值也是基本一致的。7、参考任务2的实现,请实现采用定时器触发的方式启动DAC转换。答案:见工程练习7-7第8章1、使用RS485总线通信模块与Modbus通讯协议搭建一款简易的物联网系统。2、在本章任务中,使用了串口调试助手打印接收到的数据。请编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论