单片机面试问题

前言

下面以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的通道之间采集还有一定的互相影响,不能用于高精度采集场合,如果希望尽可能提高采集的稳定性和精度,在多通道同时采集的时候,选用通道数有一定的间隔。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
单片机面试常见问题及答案: 1. 什么是单片机单片机是一种集成电路芯片,内部包含处理器、存储器、输入/输出接口和时钟电路等功能模块,能够完成特定的任务。 2. 单片机的特点有哪些? 单片机的特点包括:体积小、功耗低、成本低、集成度高、易于开发和使用等。 3. 请简述单片机的工作原理。 单片机通过时钟信号驱动,根据程序指令依次执行各种操作,通过输入输出口与外部设备进行通信和控制。 4. 单片机与微处理器有何区别? 单片机是一种完整的计算机系统,包含处理器、存储器和各种接口,而微处理器则只是一个计算机中的一个核心部件。 5. 请问你熟悉哪些单片机型号? 这里可以根据自己的了解情况回答,比如:我熟悉51系列的单片机,如STC89C52、AT89S52等。 6. 单片机的编程语言有哪些? 单片机的编程语言包括汇编语言和高级语言,汇编语言较底层,高级语言如C语言则更加易学易用。 7. 请简述单片机的中断机制。 中断是单片机处理外部事件的一种机制,当外部事件发生时,单片机会中断当前的程序执行,转而执行中断服务程序。 8. 单片机的时钟有什么作用? 单片机的时钟信号用于驱动处理器的运行,规定了处理器的工作速度,也可以用于计时和延时等功能。 9. 单片机的程序存储在哪里? 单片机的程序通常存储在闪存或者EPROM等可擦写存储器中。 10. 如何进行单片机的调试和测试? 单片机的调试和测试可通过仿真器、调试器等工具进行,也可通过串口通信将调试信息输出到计算机上进行分析。 以上是一些常见的单片机面试问题及答案,希望对你有所帮助。如果还有其他问题,欢迎继续提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值