stm32 40道选择题解1
第一题:型号解读
(1)STM32:STM32代表ARM Cortex-M系列内核的32位微控制器。
(2)F:F代表芯片子系列。
(3)407:407代表高性能基础系列。
(4)R:代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚。
(5)B:代表内嵌Flash容量,其中6代表32K字节Flash,8代表64K字节Flash,B代表128K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash。
(6)T:代表封装,其中H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装。
(7)6:代表工作温度范围,其中6代表-40——85℃,7代表-40——105℃。
第二题:开发工具
一集成开发环境
(1)Keil MDK Keil Embedded Development Tools for Arm, Cortex-M, Cortex-R4, 8051, C166, and 251 processor families.
(2)IAR EWARM IAR Systems
(3)Embedded Studio Embedded Studio: The Multi-Platform IDE
二专用IDE
(1)STM32CubeIDE STM32CubeIDE - Integrated Development Environment for STM32 - STMicroelectronics
ST官方推出的集成开发环境,集成了 TrueSTUDIO + STM32CubeMX 两个工具。
(2)RT-Thread Studio https://www.rt-thread.org/page/studio.html
三下载器:J-Link、ULink、ST-Link、CMSIS-DAP Debugger
(本题中 keil应该是包括MDK的,keil四大软件 MDK C51 C251 C166)
第三题:时钟源
1、HSI是高速内部时钟,RC振荡器,频率为16MHz。
2、LSI是低速内部时钟,RC振荡器,频率为32KHz。
3、HSE是高速外部时钟,可接晶体/陶瓷振荡器,或者接外部时钟源(Bypass模式),频率范围是4-48MHz。
4、LSE是低速外部时钟,接频率为32.768KHz的石英或谐振器,或者使用旁路模式引入外部时钟源。
5、PLL为锁相环倍频输出,其时钟输入源可选择为HSE、HSI。倍频可选择为1~8倍,但是其输出频率最大不得超过72MHz(注意单片机的最大频率)。
SYSCLK 系统时钟来源有三个:HSI振荡器时钟 HSE振荡器时钟 PLL时钟
第四题:最大系统时钟频率
当选择PLL为系统时钟时可得最大频率,由产品手册得为72MHZ
第五题:中断响应顺序
STM32分为抢占式优先级和响应优先级,每个中断源都需要被指定这两种优先级
1、抢占优先级不同,会涉及到中断嵌套,抢占优先级高的会优先抢占优先级低的,优先得到执行。
2、抢占优先级相同,不涉及到中断嵌套,响应优先级不同,响应优先级高的先响应。
3、抢占优先级和响应优先级都相同,则比较它们的硬件中断编号,中断编号越小,优先级越高
中断号与中断向量表成对应关系(注意:优先级数字越小,优先级越高)
中断向量表:每一个中断函数都有一个地址,这个地址是由编译器随机分配的在内存中去定义一个地址的列表,这个列表的地址是固定的,列表里面存放中断函数的地址以及跳转到该中断函数地址所在的程序。
第六题:AHB
AHB=Advanced High Performance Bus
Advanced 高级 Performance 性能 Bus 线
高级高性能总线
是一种“系统总线”。AHB 主要用于高性能模块(如CPU、DMA和DSP等)之间的连接
第七题:标准库GPIO口配置
GPIO_Mode_IN //输入
GPIO_Mode_OUT //输出
GPIO_Mode_AF //复用模式
GPIO_Mode_AN //模拟输入
上拉输入就是信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平
下拉输入就是信号进入 芯片后加了一个下拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为低电平;
模拟输入:是指传统入式的输入.数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。
第八题:GPIO寄存器
GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I)
GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..I)
GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR) (x = A..I/)
GPIO 端口上拉/下拉寄存器 (GPIOx_PUPDR) (x = A..I/)
GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..I)
GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..I)
GPIO 端口置位/复位寄存器 (GPIOx_BSRR) (x = A..I)
第九题:高速外设总线
AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”。AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。APB,是AdvancedPeripheral Bus的缩写,这是一种外围总线。 APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。再往下,APB2负责AD,I/O,高级TIM,串口1;APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。
APB1是低速总线(最高 42Mhz),APB2 是高速总线(最高 84Mhz)
第十题:通讯方式
常见通信方式TTL RS232 RS485 I2C SPI CAN
单工:只能进行接收,或者只能进行发送半双工:可以进行接收,也可以进行发送,但是同一时间只能进行接收或者发送。全双工:可以进行接收,也可以进行发送,且同一时间,可以同时进行接收和发送。
同步通讯: 收发双方至少一根信号线一根数据线,在时钟信号的驱动下,双方同步数据,通讯双方会统一规定在时钟信号上升沿或者下降沿对数据采样。
异步通讯:不使用时钟信号同步数据,不使用信号线,直接在数据中加入用于同步的信号位,以数据帧的格式传输数据,有时候还要约定收发双方的传输速率。一般数据帧格式为(起始位+数据+校验位+结束位)。
1.uart:异步全双工通信2.rs485:异步半双工,rs485的本质就是uart外接485芯片,采用差分信号,抗共模干扰能力强,即抗噪声性能好,但是速度是uart的一半。3.spi:全双工同步通信4.i2c:半双工同步
第十一题:同第十题
第十二题:看门狗
STM32F10xxx内置两个看门狗,(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
独立看门狗功能描述在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。如果程序异常,就无法正常喂狗,从而系统复位。
窗口看门狗功能描述之所以称为窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚
外部硬件看门狗如其意思,是单独在外面通过硬件运行的看门狗
第十三题:外部中断线与中断向量
PxN管脚共用外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler,但是需要注意的是[9...5]共用EXTI95IRQn和EXTI95IRQHandler、[15...10]共用EXTI1510IRQn和EXTI1510IRQHandler。
第十四题:外部中断 中断线配置
STM32F103 的 19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断;
线 16:连接到 PVD 输出;
线 17:连接到 RTC 闹钟事件;
线 18:连接到 USB 唤醒事件;
配置EXTI
EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line14; //配置第十四个中断线 EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能EXTI EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // 使用中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 EXTI_Init(&EXTI_InitStructure);
第十五题:定时器
STM32总共有3中定时器 高级定时器、通用定时器、基本定时器
三种定时器的区别如下
第十六题:同第十五题
第十七题:APB总线 and I/O最大翻转速度
STM32 APB1和APB2的区别主要是三点,分别是所对接的端口不通、工作速度状态不同、以及外设不同,具体区别如下如下:
1、所对接的端口不同:
APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM。
APB2负责AD,I/O,高级TIM,串口1。
2、所支持速度不同
APB1支持低速状态下的工作,APB2支持高速状态下的工作。
3、两者的外设不同
STM32 APB1和APB2的外设是不一样的,在STM32 APB1和APB2的中文手册上就可以看到了。
查资料可得:GPIO最大翻转速度可达18MHz
第十八题:输出模式位
MODE来定义最大输出速度的 01-10M,10-2M,11-50M
第十九题:DMA初始化函数
typedef struct{
uint32_t DMA_PeripheralBaseAddr; // 外设地址
uint32_t DMA_MemoryBaseAddr; // 存储器地址
uint32_t DMA_DIR; // 传输方向
uint32_t DMA_BufferSize; // 传输数目
uint32_t DMA_PeripheralInc; // 外设地址增量模式
uint32_t DMA_MemoryInc; // 存储器地址增量模式
uint32_t DMA_PeripheralDataSize; // 外设数据宽度
uint32_t DMA_MemoryDataSize; // 存储器数据宽度
uint32_t DMA_Mode; // 模式选择
uint32_t DMA_Priority; // 通道优先级
uint32_t DMA_M2M; // 存储器到存储器模式}
DMA_InitTypeDef;
第二十题:IIC 通信
第二十一题:ADC
ADC是Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。
STM32的ADC精度是12位,它有18个通道,可以测量16路外部和2个内部信号源,各通道的A/D转换可以单次、连续、扫描或间断模式执行,ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
转换结束,注入转换结束和发生模拟看门狗事件时产生中断单次和连续转换模式从通道0到通道n的自动扫描模式自校准带内嵌数据一致的数据对齐
通道之间采样间隔可编程规则转换和注入转换均有外部触发选项间断模式双重模式(带2个ADC的器件)ADC转换速率1MHzADC供电要求:2.4V到3.6VADC输入范围:VREF- ≤ VIN ≤ VREF+规则通道转换期间有DMA请求产生。
stm32的usb简介:1。usb外设实现了usb2.0全速总线和APB1总线间的接⼝。2。usb外设支持usb挂起/恢复操作,可以停止设备时钟实现低功耗。
第二十二题:cpu唤醒
1、RTC定时唤醒;
2、外部中断唤醒(按键或者通讯唤醒);
3、特殊唤醒引脚唤醒(某些引脚具有专门的唤醒功能)
USB设备进入挂起状态之后,将由Resume信号进行唤醒。Resume信号可以由USB主机发起,也可以由USB设备本身触发
第二十三题:优先级个数
STM32 目前支持的中断共为 84 个(16 个内核+68 个 外部), 16 级可编程中断优先级 的设置(仅使用中断优先级设置 8bit 中的高 4 位)和 16 个抢占优先级 (因为抢占优先级最多可以有四位数)
第二十四:外部中断控制器个数 见十四题
第二十五题:见第三题
第二十六题:电源复位情形
对于STM32来说,复位通常分为三种类型:系统复位、电源复位和备份域复位。本文结合STM32F4描述系统和电源复位的内容。
1. 系统复位
除了RCC的复位标志和备份域中的寄存器外,系统复位会将其它全部寄存器都复位为复位值。
1.产生系统复位事件:
NRST 引脚低电平
窗口看门狗计数结束
独立看门狗计数结束
软件复位
低功耗管理复位
2. 电源复位
除备份域内的寄存器以外,电源复位会将其它全部寄存器设置为复位值。
产生电源复位条件:
上电/掉电复位或欠压复位
在退出待机模式时
第二十七题:处理器架构
Cortex系列属于arm-v7架构
第二十八题:流水线
ARMCortex-M3采用哈佛结构,并选择了适合于微控制器应用的三级流水线
第二十九题:寄存器组
第三十题:ADC通道组
STM32其ADC的规则通道组最多包含16个转换,而注入通道组最多包含4个通道
第三十一题:DMA控制器
1. 什么是DMA (DMA的基本定义)
DMA,全称Direct Memory Access,即直接存储器访问,是单片机的一个外设。
DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。这里的存储器可以是片内的SRAM(默认存放变量)或者是FLASH(默认存放常量,被const修饰的全局变量可以看成是常量类型),而外设指的其实是外设的数据寄存器。但它们本质上是一样的,都是从内存的某一区域传输到内存的另一区域(外设的数据寄存器本质上就是内存的一个存储单元)。
我们知道CPU有转移数据、计算、控制程序转移等很多功能,系统运作的核心就是CPU,CPU无时不刻的在处理着大量的事务,但有些事情却没有那么重要,比方说数据的复制和存储数据,DMA的主要功能是用来搬数据,在传输数据的时候,CPU就可以不被占用用来干其他事情,对于实时性要求比较高的场合,我们可以利用DMA来减小CPU的负担。
因此:转移数据(尤其是转移大量数据)是可以不需要CPU参与。比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,直接让数据由A拷贝到B不经过CPU的处理,通过DMA解决大量数据转移过度消耗CPU资源的问题。
2. DMA传输参数
我们知道,数据传输,首先需要的是
数据的源地址
数据传输位置的目标地址
传递数据多少的数据传输量
进行多少次传输的传输模式 DMA所需要的核心参数,便是这四个
当用户将参数设置好,主要涉及源地址、目标地址、传输数据量这三个,DMA控制器就会启动数据传输,当剩余传输数据量为0时 达到传输终点,结束DMA传输 ,当然,DMA 还有循环传输模式 当到达传输终点时会重新启动DMA传输。
也就是说只要剩余传输数据量不是0,而且DMA是启动状态,那么就会发生数据传输。
3. DMA的主要特征
每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置;
在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:很高、高、中等和低),优先权设置相等时由硬件决定(请求0优先于请求1,依此类推);
独立数据源和目标数据区的传输宽度(字节、半字、全字)[即1个字节、2个字节、4个字节],模拟打包和拆包的过程。源和目标地址必须按数据传输宽度对齐;
支持循环的缓冲器管理;
每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志逻辑或成为一个单独的中断请求;如果配置了中断使能,就会触发中断,然后通过中断标志位判断引起中断的事件类型,通常我们用来监测DMA是否传输完成。
存储器和存储器间的传输、外设和存储器、存储器和外设之间的传输;
闪存、SRAM、外设的SRAM、APB1、APB2和AHB外设均可作为访问的源和目标;
可编程的数据传输数目:最大为65535。
第三十二题:见第十题
第三十三题:见第十四题
第三十四题:
可编辑优先级有16个 4位二进制数足够了
第三十五题:见第三十一题
第三十六题:ARM的异常
异常 是处理器核在顺序执行程序指令流的过程中突然遇到了异常的事情,这些事件包括硬件错误、指令执行错误、用户程序请求服务、内存访问异常、取指令异常等,几乎每种处理器都支持特定的异常处理,中断也是异常的一种。
ARM的异常源
异常地址 | 异常源 | 描述 | 优先级(6最低) |
---|---|---|---|
0x00 | Reset | 复位异常:在内核复位时执行 | 1 |
0x04 | Undefined instructions | 未定义指令异常:流水线执行非法指令产生,该异常发生在流水线译码阶段,如果当前指令不能被识别为有效指令,将会出现此类异常。 | 6 |
0x08 | SVC(Supervisor Call)、SWI | 软中断异常:用于程序触发软件中断执行,该异常是由应用程序自己调用时产生,当应用程序在需要访问硬件资源时需要调用该指令,该异常在管理模式(SVC)下运行。 | 6 |
0x0C | Prefetch abort | 预取指令中止异常:当一条指令从内存中取出时由于某些原因失败,且如果它能到达执行状态将会触发此异常。 | 5 |
0x10 | Data abort | 数据访问中止异常:如果一个预取指令试图存取一个不存在或非法的内存单元时,将会触发此异常。 | 5 |
0x14 | RESERVED | 保留 | 保留 |
0x18 | IRQ | 一般中断异常 | 4 |
0x1C | FIQ | 快速中断异常 | 3 |
详细的见:ARM 异常(Exception)_Eddy_l的博客-CSDN博客_arm异常
第三十七题:大小端模式
端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,数据从高位往低位放;这和我们的阅读习惯一致。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
一个字节存储8位无符号数,储存的数值范围为0-255=(16*16)。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 1(undefined) 。可存储两位16进制数
0x2 16 84 65=0x02 16 84 65
第三十八题:寄存器
第三十九题:见三十八
第四十题:嵌入式系统特点
1、系统内核小。嵌入式系统一般是应用于小型电子装置的,资源相对有限,所以内核较之传统的操作系统要小。
2、专用性强。嵌入式系统的个性化强,其中的软件系统和硬件的结合紧密,一般硬件系统要进行的移植,即使同一品牌、同一系列的产品中也需根据系统硬件的变化和增减进行修改。同时不同的任务,需要对系统进行较大更改,程序的编译下载须和系统相结合,这种修改和通用软件的“升级”是两个概念。
3、系统精简。嵌入式系统没有系统软件和应用软件的区分,不要求其功能设计及实现上复杂,一方面利于控制系统成本,也利于实现系统安全。
4、嵌入式软件的基本要求是高实时性的系统软件。软件要求固态存储,提高速度;软件代码要求高质量和高可靠性。
5、多任务的操作系统。嵌入式软件要想走向标准化,就须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统直接运行;但是为了调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户须自行选配RTOS开发平台。
6、需要开发工具和环境。其本身不具备自举开发能力,即使设计完成后用户通常也是不能对程序功能进行修改的,须有一套开发工具和环境才能开发,工具和环境是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。
7、与具体应用有机结合在一起,升级换代同步进行。因此,嵌入式系统产品一旦进入市场,具有较长的生命周期。
8、为提高运行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片中。
以上就是给各位带来的关于嵌入式系统的特点有哪些的全部内容了。
stm32 40道选择题解1相关推荐
- 面试还搞不懂Redis,快看看这40道面试题!| 博文精选
作者| 程序员追风 责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 近年来,微服务变得越来越热门,越来越多的应用部署在分布式环境中.常用的分布式实现方式之一就有 Redis ...
- 1000道Python题库系列分享六(40道)
上一期题目链接:1000道Python题库系列分享五(40道) 上一期题目答案: 本期题目: ----------相关阅读---------- 教学课件 1900页Python系列PPT分享一:基础知 ...
- 1000道Python题库系列分享五(40道)
上一期题目链接:1000道Python题库系列分享四(40道) 上一期参考答案: 本期题目: ----------相关阅读---------- 教学课件 1900页Python系列PPT分享一:基础知 ...
- 面试 Redis 没底?这 40 道面试题让你不再慌(附答案)
金三银四面试季,为了做好大家面试路上的助攻手,对于 Redis 这块心里还没底的同学,特整理 40 道Redis常见面试题,让你面试不慌,争取 Offer 拿到手软! 1.什么是 Redis? Red ...
- BTA 常问的 Java基础40道常见面试题及详细答案
最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案. 为此我业余时间整理了,Java基础常见的40道常见面试题,及详细答案,望各路大牛,发现不对的地方,不吝赐教,留言即 ...
- 40 道基础Dubbo 面试题及答案
转载自?40 道 Dubbo 面试题及答案 想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一.Dubbo 更是中高级面试过程中经 ...
- 【2022最新Java面试宝典】—— MySQL面试题(40道含答案)
目录 1.MySQL 中有哪几种锁? 2.MySQL 中有哪些不同的表格? 3.简述在MySQL 数据库中 MyISAM 和InnoDB 的区别 4.MySQL 中InnoDB 支持的四种事务隔离级别 ...
- UPC第38,39,40场部分题解
UPC第38,39,40场部分题解 第38场 A. Bovine Alliance Description Bessie and her bovine pals from nearby farms h ...
- 8年测试经验,耗时一星期整理的40道自动化测试面试题(附精准答案),爆肝2W字..........
转眼金三银四的招聘季已经来了,没点真本事真技术,没点面试经验,不了解点职场套路,如何在面试中过五关斩六将?如何打败面试官?如何拿下那梦寐以求的offer呢? 如果你的跳槽意向已经很确定了,那么请接着往 ...
最新文章
- 一键fxxk,代码修复神器拯救你
- Windbg 脚本命令简介
- 用于稠密检索的无监督领域适应方法—Generative Pseudo Labeling (GPL)
- 这个Nature推荐的代码海洋竟然有文章作者上传的所有可重现性脚本,涉及单细胞、微生物组、转录组分析、机器学习等相关
- java 面试代码_java代码编写及面试题
- Matplotlib作业一
- 私人飞机包机运营商flyExclusive通过与BitPay合作支持加密货币付款
- ubuntu中wps缺失字体
- luoguP3912 素数个数
- ScheduledExecutor定时器
- iOS中Lua脚本应用笔记一:脚本概念相关
- angular页面打印局部功能实现方法思考
- swift PickerView
- 腾讯即将发布区块链游戏,网友大呼求别再养猫养狗了!
- Take-Two同意斥资127亿美元收购Zynga,或成史上最大游戏并购交易
- Ubuntu fastboot 烧写
- 我分析了上万个微信红包数据,得到了这些发现(附数据集)
- 国际及国内计算机界核心期刊和会议
- mixamo和ue小白人映射关系以及让mixamo绑定的人物在场景中运动的多种方法实践...
- Python一行代码即可绘制和弦图