【学习笔记】STM32前期学习的一些知识点总结

在2019年的8月,一个月入门STM32,仍然记得每天在实验室埋头苦干的日子。最近翻出来当时的暑假学习总结文档,与大家分享分享。论述如有错误,望大家指正。

1. CPU时钟如何产生?
由晶体振荡器产生的,俗称晶振。之所以晶振能当作振荡器使用是因为它具有“压电效应”。在晶振两端加上电场,晶振会产生机械变形,若加上交变电场就能产生机械振动。

2. 时钟定时器(TIM)的周期(或者频率)怎么确定?计算公式是什么?
定时器的时钟来源于APB1和APB2的一个倍频器,定时器的周期公式为

T=(arr+1)*(PSC+1)/Tck

其中TCK为时钟频率,时钟频率可以直接由晶振产生,也可以用PLL电路对晶振频率倍频或分频产生。PSC为时钟预分频系数,arr为自动重装载值。这两个值可以自己设置,从而设置定时器的定时时间。

3. PWM是什么?举例说明它有什么作用。
PWM是脉冲宽度调制技术,通过调节高低电平的占空比来输出,来等效地获得所需要波形,从而输出不同大小的等效电流。灯的亮度,电机转动速度等均可以用PWM控制。

4. 寄存器、RAM、ROM(Flash)有什么区别?
寄存器是CPU的内部组成部分,它们可以暂存指令、数据、地址。我们配置库函数实现各种功能的本质是对寄存器操作,向其发送指令,缓存数据等。
RAM也叫内存,它分为静态RAM(SRAM)和动态RAM(DRAM)。SRAM速度非常快,不需要刷新电路就能保存数据,是目前最快的存储设备。DRAM保存数据的时间很短,它需要内存刷新电路,每隔一段时间刷新充电一次。
注:刷新涉及到内存工作原理,一个DRAM存储单元是0还是1取决于电容是否有电荷,有电荷表示1,无电荷表示0。代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。
ROM是只读存储器,一旦储存资料就无法再将之改变或删除,后来发展出来了可编程只读存储器(PROM),可擦可编程只读存储器(EPROM)和电子式可擦除可编程只读存储器(EEPROM)
FLASH就是闪存,属于内存器件的一种,不仅具备EEPROM的性能,且掉电不会丢失数据。

5. 看门狗有什么作用?它的原理是什么?
看门狗是一种用于监测单片机程序运行状态的模块或者芯片。作用是:当程序执行异常,看门狗发送复位信号,使程序重新执行。本质是计数器从设定值计数到0时,看门狗发送复位信号。当程序正常运行时,在计数器减到0前“喂狗”,即使计数值回到设定值,使得看门狗始终不发送复位信号。当程序异常时,无法“喂狗”,则计数器到0时,“狗叫”,发送复位信号,程序重新执行。

6. 在调用函数、进入中断时会压栈。简述一下压栈?
栈又名堆栈,它是存储的系统。可以把栈理解为弹夹,压栈就是压子弹,写入数据;出栈是发射子弹,输出数据。这样的顺序满足:先进后出,后进先出。

7. 内存分为哪几个区?栈区、堆区、全局变量区中分别存储哪些数据?
内存分为:代码区(code area)、全局变量区(data area)、栈区(stack area)、堆区(heap area)。

  1. 栈区存放函数的参数值、局部变量的值。
  2. 堆是由程序员自己申请并指明大小,栈区能存放的数据它也能存放。
  3. 全局变量区存放全局变量、静态数据、const常量,程序结束后由系统释放。

8. 负数在内存中是如何存储的?字符串在内存中是如何存储的?什么是大端序和小端序?
负数先求相应正数、按位取反、再加1。字符串在内存中是以ASCII码存储的。大端序就是数据的高位字节存放在地址的低端,低位字节存放在地址的高端;小端序则是数据的高位字节存放在地址的高端,低位字节存放在地址的低端。

9. 什么是内存对齐?为什么会有内存对齐?

  1. 内存对齐就是将数据根据数据类型存放到以数据类型为倍数的地址处。而间隙处由无效数据补满。内存对齐通常出现在结构体中,最后结构体的大小是最大数据类型大小的整数倍。
  2. 内存对齐的原因:①硬件原因。某些平台只能在某些地址处取某些特定类型的数据。②内存对齐是内存规则分配的表现,能够提高CPU处理速率。

10. CAN、I2C、UART、USB 2.0,它们分别需要几根线?每根线的功能是什么?如何连接?

  1. CAN需要CAN-H和CAN-L两根线,通过两根线上的高低电平变化来实现数据的传输。CAN-H与CAN-L各自连接到CAN-H和CAN-L。
  2. I2C需要时钟线(SCL)和数据线(SDA),时钟线高低电平变化频率恒定,数据线通过高低电平跳变来实现数据的传输。两根线分别接到MCU的两个引脚,或SCL接SCL、SDA接SDA。
  3. UART有三根线:TXD、RXD、GND。TXD用于发送数据,RXD用于接收数据,GND用于给信息传输的双方提供参考电平。发送方的TXD接到接收方RXD,RXD接到接收方TXD,GND相连。
  4. USB2.0需要四根线:电源正极(VCC)、地线(GND)、负电压数据线(D-)、正电压数据线(D+)。两根数据线,两根电源线。每根线接收方与发送方一一对应连接。

11. 共模信号与差分信号的定义是什么?特点是什么?

  1. 共模信号是幅度相等、相位相同的信号。

  2. 差分信号就是差模信号,它是幅度相等,相位相反的信号。

  3. 在差分对中,差分信号被定义为两根单端信号的差值,共模信号指的是两根信号线上的平均值。

12. 模拟地与数字地为何需要隔离开并使用单点连接?
这是在PCB设计中涉及到的问题。由于数字信号变化快,导致在数字地上会引起噪声,而模拟信号需要一个干净的地参考工作。若连在一起噪声会影响到模拟信号。单点连接即所有模拟地都拉出线,到同一点汇总,而两个模拟地之间都不再有另外的连接节点。这也是为了防止噪声干扰。

13. 为何CAN总线需要加入终端电阻,不加会有什么后果?CAN通信拓扑结构为什么不能是环形?
加入终端电阻是为了吸收信号反射及回波,提高抗干扰能力,提高信号质量。不加终端电阻会导致信号不稳、差分电压也会发生变化。环形拓扑结构可靠性差,若环上任意一个节点出现故障就会引起全网故障。而CAN总线正是具有多主控制,隔离故障单元的功能,若采用环形拓扑则使CAN不再是CAN。

发布了6 篇原创文章 · 获赞 1 · 访问量 71

猜你喜欢

转载自blog.csdn.net/qq_30447315/article/details/105183138