单片机面试问题

前言

下面以STM32F103C8T6举例,其实STM32F10X系列的其他芯片也兼容。当然我讲的是标准库。

1.STM32F103C8T6芯片一共有几种GPIO口模式,分别是什么?

8种GPIO模式

输出4种:复用推挽输出、通用推挽输出、复用开漏输出、通用开漏输出

输入4种:模拟输入、浮空输入、上拉输入、下拉输入

以下为STM32F10X系列标准库的GPIO模式定义结构体。

typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

2.STM32F103C8T6标准库配置,GPIO_Init里有成员,GPIO_Speed代表什么?

这个成员变量只有输出配置的时候有作用,代表管脚输出高低电平的极限翻转频率。

个人理解是,在使用读取数据比较快的从机设备时,单片机的GPIO输出高低电平的翻转速度可能根不上从机的读取速度,就需要用到这里的配置。

typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

3.STM32F103C8T6的浮空输入和上拉输入、下拉输入有什么区别?在什么场景下应用?

上拉输入:相当于浮空输入+一个芯片内部自带的上拉电阻。默认情况下输入高电平。

下拉输入:相当于浮空输入+一个芯片内部自带的下拉电阻。默认情况下输入低电平。

浮空输入:输入的高低电平不确定,在悬空状态下容易受到干扰。

除了模拟ADC、DAC用模拟输入外,其余的都选用浮空和上下拉输入。具体如何使用,购买的传感器或从机设备的手册会给出详细建议的。

对了,这里为什么DAC要使用模拟输入呢?我觉得可能是使用了逐次逼近型的DAC,在DAC的内部使用到了ADC来比较,所以这里配置模拟输入。因为在GPIO口输出的同时应该是可以输入的。

4.谈谈你对中断向量表的理解

中断向量表相当于一个一维指针数组,存储着各种中断处理函数的地址,用于中断处理函数的跳转,通常存储在存储器的开始位置。

中断函数需要重写,当一个中断发生时,CPU会自动从中断向量表中找到对应中断的地址,跳转到中断函数里执行。

5.STM32中NVIC的作用

NVIC又叫嵌套向量中断控制器,是CPU内部专门管理中断的一块核内外设,在用到了多个中断时,一定要配置NVIC,设置终端的优先执行次序,另外如果要STM32某一个片上外设支持中断,一定要对该外设做对应的配置。

6.中断中抢占优先级和响应优先级有什么区别

抢占优先级能够实现中断嵌套,优先级高的中断可以嵌套打断优先级低的中断。

响应优先级,当抢占优先级相同时,优先排队。

区别在哪呢,大白话来说就比如抢占优先级是一个人在看病,现在有个ICU的,肯定是要急救,打断所有人的中断,而响应优先级好比是一个人是医院的SVIP,他不能打断已经看病的人,但是可以插队到最前面看病。当然,只是希望大家理解这个概念,医院SVIP和插队行为纯属虚构。

7.STM32F103C8T6系列芯片定时器有哪些?通常用于什么场合?

系统滴答定时器、看门狗定时器、基本定时器、通用定时器、高级定时器

系统滴答定时器:是一个24位倒计数定时计数器,主要用于操作系统时间片,用来写比较准确的延时函数,for循环写出来的延时函数需要考虑函数跳转,变量定义,变量加减,条件判断等因素带来的开销,所以用系统滴答定时器写延时函数比较准确。

看门狗定时器:独立看门狗和窗口看门狗,只要用于程序因为各种原因跑飞,或者异常执行,使程序复位或立刻停止操作。

基本定时器:TIM6、TIM7,拥有定时中断、主模式触发DAC的功能。

通用定时器:TIM2、TIM3、TIM4、TIM5,拥有基本定时器全部功能,额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能。

高级定时器:TIM1、TIM8,拥有通用定时器全部功能,额外具有重复计数器、死区生成、互补输出、刹车输入等功能

8.STM32F103C8T6通用定时器,可以输出PWM信号,请谈谈PSC ARR CNT CRRx是任何影响PWM生成的?

时钟线上拿到的信号时钟信号,经过PSC进行预分频,分频之后的时钟用于计数

ARR里装计数的目标值,CNT是计数器的值,当CNT的值等于ARR值,就产生一次更新事件,一次更新时间长度的倒数就是一个PWM频率

CCRx里面是PWM波进行高低电平切换的比较值

PSR、ARR决定一个PWM的周期

CCRx影响占空比

注:如果需要学习详细的,可以评论区留言,博主跟着江科大学习的,可以给你发笔记,也可以告诉你江科大的链接。

9.STM32F103C8T6一共有几个普通定时器,分别挂在哪一条时钟线上?

一共8个,就是前面提到的基本定时器、通用定时器、高级定时器

TIM1、TIM8挂在APB2上,其他的挂在APB1上。

10.谈谈ADC

STM32F103C8T6一共有3个ADC,是12位精度的

ADC的通道之间采集还有一定的互相影响,不能用于高精度采集场合,如果希望尽可能提高采集的稳定性和精度,在多通道同时采集的时候,选用通道数有一定的间隔。

  • 38
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
嵌入式STM32面试题是关于STM32单片机的一些基本概念和应用能力的检测,下面我就这些问题进行一一回答: 1. 请简要介绍一下STM32单片机。 STM32是意法半导体公司(STMicroelectronics)基于ARM Cortex-M内核推出的一款32位微控制器系列产品,广泛应用于嵌入式系统中。它具有低功耗、高性能、丰富的外设资源和强大的编程和开发支持,适用于各种应用领域。 2. 请简述ARM Cortex-M系列和STM32单片机之间的关系。 ARM Cortex-M系列是英国ARM公司推出的一种处理器内核架构,而STM32单片机则是基于该内核架构设计的具体产品。STM32单片机是ARM Cortex-M系列处理器的一种典型应用,意法半导体将ARM Cortex-M内核与自身的外设资源相结合,推出了一系列功能丰富的STM32单片机产品。 3. 在STM32中,如何配置GPIO口的工作模式? 在STM32中,通过配置GPIO的MODER(模式寄存器)和OTYPER(输出类型寄存器)寄存器,可以实现对GPIO口的工作模式进行配置。MODER寄存器用于设置GPIO口的工作模式,比如输入模式、输出模式等;OTYPER寄存器则用于设置GPIO口的输出类型,比如推挽输出、开漏输出等。 4. 请介绍一下STM32的中断控制器NVIC(Nested Vectored Interrupt Controller)。 NVIC是STM32中的中断控制器,用来管理各种中断事件。它通过优先级和中断屏蔽等方式,对中断进行管理和分发。NVIC中定义了一些控制器和状态寄存器,如中断优先级寄存器(IPR)、中断控制状态寄存器(ICSR)等,可以用来配置中断优先级、检查中断状态等。 5. 如何在STM32中使用定时器? 在STM32中,可以通过配置定时器的各种寄存器,来实现各种定时器功能。定时器用来产生一定的时间延时,或者作为计数器来计算外部事件的频率。通过配置定时器的预分频值、计数器值、工作模式等参数,可以达到不同的定时器功能。 总结:以上是对嵌入式STM32面试题的简要回答。STM32是一款广泛应用于嵌入式系统的32位微控制器,具有低功耗、高性能的特点。在STM32中,可以通过配置GPIO口、中断控制器NVIC和定时器等来实现各种功能和应用。对于嵌入式相关的求职者来说,对STM32的理解和掌握将是一个重要的竞争优势。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值