stm32

,UART,SPI,IIC的详解

对比项 UART SPI IIC
信号线数目 UART一般由TXD、RXD、GND三根线组成,是一种异步传输协议 SPI是四根线,分别是CS(片选)、MOSI(主发从收)、MISO(从发主收)、CLK(时钟),是一种同步传输协议。 I2C是两根线,SDA(数据)和SCL(时钟),也是一种同步传输协议
设备从属关系 / 存在主从设备。SPI用片选信号选择从机 存在主从设备。IIC用地址选择从机。
通信方式 全双工通信 全双工通信 半双工通信
通信速率 无限制,速度取决于波特率,常用9600bps(1.2KB/s)和115200bps(14.4KB/s) 全双工同步传输,速度约有50Mbps,即约5.9MB/s S(标准模式):100Kbps,即 100/8 = 12.5KB/s
F(快速模式):400Kbps,即400/8 = 50KB/s
HS(高速模式):3.4Mbps,即3.4M/8 = 435KB/s
超高速模式:5Mbit/s,即5M/8 = 525KB/s
应用领域 领域
1、UART常用于控制计算机与串行设备的芯片

2、就是我们经常所说的串口,基本都用于调试。
主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间 I2C一般是用在同一个板子上的2个IC之间的通信 ,它可以替代标准的并行总线,连接各种集成电路和功能模块。
传输距离 / / I2C需要有双向IO的支持,而且使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信
通信特征 异步,一帧可以传5/6/7/8位 同步,SPI允许数据一位一位的传送,甚至允许暂停。从最高位开始传。 同步,电平信号,一次连续8bit。从最高位开始传

SPI和UART可以实现全双工,但I2C不行;

UART,SPI,IIC是经常用到的几个数据传输标准,下面分别总结一下:


UART(通用异步接收发送器):也就是我们经常所说的串口,基本都用于调试。

主机和从机至少要接三根线,RX,TX和GND.TX用于发送数据,RX用于接受数据(收发不是一根线,所以是全双工方式)。注意甲和乙通信A.TX要接B.RX,A.RX要接B.TX(A用TX发乙当然要用RX来收了!)

如果甲是PC机,B是单片机,A和乙还要之间接一块 电平转换芯片 ,用于将TTL / CMOS(单片机电平)转换为RS232(PC机电平)。因为TTL / CMOS电平范围是0〜1.8 / 2.5 / 3.3 / 5V(不同单片机范围不同),高电压表示1,低电压表示0而RS232逻辑电平范围-12V〜12V,-5〜-12表示高电平,+ 5〜+ 12V表示低电平(对你没有听错!)为什么这么设置这就要追溯到调制解调器出生时代了,有兴趣自己去查资料。?!

uart发数据


数据协议:以PC机一给单片机乙发数据为例(1为高电平,0为低电平):A.TX to B.RX.刚开始B.RX的端口保持1,当A.TX发来 个0作为起始位告诉乙我要发数据了!然后就开始发数据,发多少呢?通常一次是5位,6位,7位,8位,这个双方事先要用软件设置好.PC机一般会用串口助手设置,单片机会在UART的驱动中设置。一小帧数据发送完了以后,A.TX给个高电平告诉B.RX我发完了一帧。如果还有数据,就再给个0然后重复上一步。如果双方约定由校验位,还要在发停止位1之前发送个校验位,不过现在一般都不需要校验位了,因为出错的概率太小了,而且一般用于调试。

一般在串口助手上还有个RTS / CTS流控选项,也叫握手,我从来没用过搬一段我能理解的介绍:。RTS(请求发送),CTS(清除发送)如果要用这两个功能,那就至少要接5根线:RX + TX + GND + RTS + CTS当甲要发送数据时,置RTS有效(可能是置1),告诉乙我要发送数据了当乙准备。好接受数据后,置CTS有效,告诉一个你可以发了。然后他们就实现了两次握手!挺耽误时间是不是?这个RTS还可以当电源使用,如果你不用它的握手功能,且电源电流在50毫安以下时,就可以把它置为高电平可以当电源用喔〜!

 

SPI(Serial Peripheral Interface,同步外设接口)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用于与EEPROM,ADC,FRAM和显示驱动器之类的慢速外设器件通信。

SPI是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换.SPI接口由SDI(串行数据输入) ,SDO(串行数据输出),SCK(从使能信号)四种信号构成,CS决定了唯一的与主设备通信的从设备,片选信号低电平有效。如没有CS信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO输出,SDI输入,数据在时钟的上升或下降沿由SDO输出,在紧接着的下降或上升沿由SDI读入,这样经过8/16次时钟的改变,完成8/16位数据的传输。

SPI数据通信的流程可以分为以下几步:

1、主设备发起信号,将CS/SS拉低,启动通信。

2、主设备通过发送时钟信号,来告诉从设备进行写数据或者读数据操作(采集时机可能是时钟信号的上升沿(从低到高)或下降沿(从高到低),因为SPI有四种模式,后面会讲到),它将立即读取数据线上的信号,这样就得到了一位数据(1bit)。

3、主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(缓存长度不一定,看单片机配置),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。

4、从机(Slave)也将自己的串行移位寄存器(缓存长度不一定,看单片机配置)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

例如,下图示例中简单模拟SPI通信流程,主机拉低NSS片选信号,启动通信,并且产生时钟信号,上升沿触发边沿信号,主机在MOSI线路一位一位发送数据0X53,在MISO线路一位一位接收数据0X46,如下图所示:

这里有一点需要着重说明一下:SPI只有主模式和从模式之分,没有读和写的说法,外设的写操作和读操作是同步完成的。若只进行写操作,主机只需忽略接收到的字节(虚拟数据);反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。 
 

IIC总线的起始信号与终止信号:
        IIC 总线在传送数据过程中一共有三种类型的信号,它们分别是:开始信号(S)、结束信号(P)和应答信号。

        开始信号:在SCL 串行时钟线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。

        结束信号:在SCL 串行时钟线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号,随着终止信号的出现,所有外部操作就结束。

IIC总线上数据传送的应答信号:
        应答信号:IIC总线进行数据传送时,传送的字节数并没有限制,但是每个字节长必须为8位长。数据传送过程中,先传送最高位(MSB),每一个被传送的字节后面都必须跟随着1位应答位(即一帧共有9位长)。

        1、应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;

        2、应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

        对于反馈有效应答位ACK的要求是:接收器在第9个时钟脉冲之前的低电平期间将数据线SDA拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放数据线SDA,以便主控接收器发送一个停止信号P。

IIC总线上数据有效性:
        IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定;只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 

        即:SDA线上的数据在SCL时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。

 IIC总线上数据帧格式:

IIC总线上传送的数据信号不仅包括真正的数据信号,并且包括地址信号。

       IIC总线规定,在起始信号后面必须传送一个从器件的地址(7位),第8位是数据传送的方向位(R/`W),用“0”来表示主器件发送(`W),“1”表示主器件接受数据(R)。每次数据传送总是由主器件产生终止信号而结束。但是,如果主器件希望继续占用总线进行新的数据传送,则可以不产生终止信号,而马上再次发出起始信号对另一从器件进行寻址操作。因此,在总线一次数据传送过程中,可以由以下几种组合方式。

      IIC (1)、主器件向从器件发送N个字节的数据。

        数据传送方向在整个传送的方向过程并没有变化,数据传送的格式如图所示。

       其中N个字节是由主机写入从器件的N个字节的数据。淡蓝色部分表示数据由主机向从机传送,粉红色部分则表示数据由从机向主机传送。

        上述的从设备地址为7位,紧接其后的读/写标志位决定了主器件的读写方向。写用“0” (低电平)来表示,读用“1” (高电平)来表示。

        1、主机首先产生START信号;

        2、然后紧跟着发送一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位(R/`W),“0”表示主机发送数据(写),“1”表示主机接收数据(读);

        3、主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,若相同,则认为自己正在被主机寻址,根据R/T位将自己确定为发送器和接收器;

        4、这时候主机等待从机的应答信号(A);

        5、当主机收到应答信号时,发送要访问从机的那个地址, 继续等待从机的应答信号;

        6、当主机收到应答信号时,发送N个字节的数据,继续等待从机的N次应答信号;

        7、主机产生停止信号,结束传送过程。

       (2)、主器件读来自从机的N字节。

        除第一个寻址字节由主机发送,N个字节都是由从器件发送,主器件接收,数据传送的格式如图所示。

        在从机产生响应时,主机从发送变成接收,从机从接收变成发送。之后,数据由从机发送,主机接收,每个应答由主机产生,时钟信号仍由主机产生。若主机要终止本次传输,则发送一个非应答信号,紧接着主机产生停止条件。

        1、主机首先产生START信号;

        2、然后紧跟着发送一个从机地址,注意此时该地址的第8位为0,表明是向从机写命令;

        3、这时候主机等待从机的应答信号(ACK);

        4、当主机收到应答信号时,发送要访问的地址,继续等待从机的应答信号;

        5、当主机收到应答信号后,主机要改变通信模式(主机将由发送变为接收,从机将由接收变为发送)所以主机重新发送一个开始start信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设置成接收模式开始读取数据;

        6、这时候主机等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号,表示不再接收数据;

        7、主机进而产生停止信号,结束传送过程。

(3)、主器件的读、写操作。

        在一次数据传送过程中,主器件先发送一个字节的数据,然后再接收一个字节的数据,此时起始信号和从器件地址都要被重新产生一次,但两次读写的方向位刚好相反,数据传送的格式如图所示。

        图中的“RS”表示重新产生的起始信号,后面一个从设备地址表示重新产生的从器件地址。

        由上可知,无论哪种形式,起始信号、终止信号和从器件地址均由主器件发送,数据字节的传送方向则由主器件发出的寻址字节中的方向位决定,每个字节的传送都必须有应答位(A或者`A)相随。

      

1.嵌入式系统中ROM、RAM、Register的概念和作用是什么?

ROM是只读存储器,断电后能保证数据不会丢失。(硬盘)
RAM是随机存储器,断电后数据会丢失.(内存)
Register是寄存器,用来暂时存放相关指令信息或数据信息的硬件设备。
2.嵌入式中断系统的概念、并举例说明终端执行过程?

        中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

3.STM32的IO可以配置成哪几种工作方式?

GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
 
4.介绍以下STM32启动过程?

通过Boot引脚设定,寻找初始地址
初始化栈指针 __initial_sp
指向复位程序 Reset_Hander
设置异常中断 HardFault_Handler
设置系统时钟 SystemInit
调用C库函数 _main


 5.串行通信方式介绍?

同步通信:I2C 半双工,SPI 全双工
异步通信:RS485 半双工、RS232 全双工
6.串口设置的一般步骤可以总结为如下几个步骤:

串口时钟使能,GPIO时钟使能
串口复位
GPIO端口模式设置:TX的GPIO工作模式为:GPIO_Mode_AF_PP;//复用推挽输出。RX的GPIO工作模式为:GPIO_Mode_IN_FLOATING;//浮空输入。
串口参数初始化:主要包含:波特率设置(115200)、8个数据位、1个停止位、无奇偶校验位、无硬件数据流控制、收发模式。
开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
使能串口
编写中断处理函数


'7.USART主要特点?
   

    (1)全双工操作(相互独立的接收数据和发送数据);
        (2)同步操作时,可主机时钟同步,也可从机时钟同步;
        (3)独立的高精度波特率发生器,不占用定时/计数器;
        (4)支持5、6、7、8和9位数据位,1或2位停止位的串行数据桢结构;
        (5)由硬件支持的奇偶校验位发生和检验;
        (6)数据溢出检测;
        (7)帧错误检测;
        (8)包括错误起始位的检测噪声滤波器和数字低通滤波器;
        (9)三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;
        (10)支持多机通信模式;
        (11)支持倍速异步通信模式。


8.I2C 总线在传送数据过程中共有三种类型信号?


        (1)开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
        (2)结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
        (3)应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障


9.I2C配置主机模式端口该怎么配置?


        硬件模式:复用开漏输出、既不上拉也不下拉。(快速模式:400 Kbit/s)
        软件模拟:推挽输出、配置上拉电阻。

10.I2C仲裁机制?


        遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。
 

11.SPI需要几根线?

SPI 接口一般使用 4 条线通信:
MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制。

12.SPI通信的四种模式?


        SPI 有四种工作模式,各个工作模式的不同在于 SCLK 不同, 具体工作由 CPOL,CPHA 决定。

(1)CPOL: (Clock Polarity),时钟极性:

SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1:
CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high;
CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是所谓的active-low;

 (2)CPHA:(Clock Phase),时钟相位:
        相位,对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿。

对于:CPHA=0,表示第一个边沿:
对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿;

CPHA=1,表示第二个边沿:
对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿;
对于CPOL=1,idle时候的是高电平,第一个边沿就是从低变到高,所以是上升沿;


 13.该如何确定使用哪种模式?

先确认从机需求的 SCLK 极性,不工作时是在低电位还是高电位,由此确认 CPOL 为 0 或 1。看原理图,我们设置串行同步时钟的空闲状态为高电平所以我们选择 SPI_CPOL_High。也就是CPOL为1
再由slave芯片 datasheet 中的时序图确认 slave 芯片是在 SCLK 的下降沿采集数据,还是在SCLK的上升沿。
 
14.CAN总结介绍一下?


        CAN控制器根据 CAN_L 和 CAN_H上 的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者比居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

15.CAN初始化配置步骤?

配置相关引脚的复用功能,使能CAN时钟
设置CAN工作模式及波特率等(CAN初始化环回模式,波特率500Kbps )
设置滤波器


16.CAN发送数据格式?

CanTxMsg TxMessage;
TxMessage.StdId=0x12; // 标准标识符
TxMessage.ExtId=0x12; // 设置扩展标示符
TxMessage.IDE=CAN_Id_Standard; // 标准帧
TxMessage.RTR=CAN_RTR_Data; // 数据帧
TxMessage.DLC=len; // 要发送的数据长度 发送8个字节
for(i=0;i TxMessage.Data[i]=msg[i]; //数据
 
17.DMA介绍?

18.DMA传输模式有几种?

DMA_Mode_Circular 循环模式
DMA_Mode_Normal 正常缓存模式
应用场景:GPS、蓝牙,都是用的循环采集,DMA_Mode_Circular模式。

“内存到外设”、“外设到内存”以及“内存到内存”
19.描述一下中断的处理流程?


(1)初始化中断,设置触发方式是上升沿/下降沿/双沿触发。
(2)触发中断,进入中断服务函数

20.STM32的中断控制器支持多少个外部中断?


STM32的中断控制器支持19个外部中断/事件请求:GPIO 的管脚 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0 ~ 15。
另外四个EXTI线的连接方式如下:

EXTI线16连接到PVD输出
EXTI线17连接到RTC闹钟事件
EXTI线18连接到USB唤醒事件
EXTI线19连接到以太网唤醒事件(只适用于互联型产品)


21.中断服务函数列表:


IO口外部中断在中断向量表中只分配了7个中断向量,也就是只能使用7个中断服务函数。

EXTI0_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
EXTI9_5_IRQHandler
EXTI15_10_IRQHandler
 
22.STM32有几个时钟源?


STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。

HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 
LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
 
23.物联网的架构分为几层?每一层都负责哪些功能?


        分三层,物联网从架构上面可以分为感知层、网络层和应用层,

感知层: 负责信息采集和物物之间的信息传输,信息采集的技术包括传感器、条码和二维码、 RFID射频技术、音视频等多媒体信息,信息传输包括远近距离数据传输技术、自组织组网技术、协同信息处理技术、信息采集中间件技术等传感器网络。感知层是实现物联网全面感知的核心能力,是物联网中包括关键技术、标准化方面、产业化方面亟待突破的部分,关键在于具备更精确、更全面的感知能力,并解决低功耗、小型化和低成本的问题。
网络层: 是利用无线和有线网络对采集的数据进行编码、认证和传输,广泛覆盖的移动通信网络是实现物联网的基础设施,是物联网三层中标准化程度昀高、产业化能力昀强、昀成熟的部分,关键在于为物联网应用特征进行优化和改进,形成协同感知的网络。
应用层: 提供丰富的基于物联网的应用,是物联网发展的根本目标,将物联网技术与行业信息化需求相结合,实现广泛智能化应用的解决方案集,关键在于行业融合、信息资源的开发利用、低成本高质量的解决方案、信息安全的保障以及有效的商业模式的开发。
 
24.简述设置系统时钟的基本流程?

打开HSE,等待就绪后,设置Flash等待操作。
设置AHB,APB1,APB2分频系数,确定他们各自和系统时钟的关系。
设置CFGR寄存器确定PLL的时钟来源和倍频系数(HSE外部8M*9倍=72MHz)。
使能PLL,将系统时钟源切换到PLL.
 
25.如果是两个优先级相同的任务怎么运行?

        使获得信号量任务的优先级在使用共享资源期间暂时提升到所有任务最高优先级的高一个级别上,以使该任务不被其他任务所打断,从而能尽快地使用完共享资源并释放信号量,然后在释放信号量之后,再恢复该任务原来的优先级别。

26.Cortex-M3 的存储空间可以分为哪几个部分,每一部分的地址范围是怎样的?


        程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内,Cortex-M3最大支持4GB的存储空间,但在实际的不同STM32不一样;

在0xE0000000到0xFFFFFFFF的512MB的地址存储空间是用于NVIC、MPU及调试组件等使用;
在0xA0000000到0xDFFFFFFF的1GB的地址存储空间是用于片外外设扩展;
在0x60000000到0x9FFFFFFF的1GB的地址存储空间是用于扩展片外存储器;
在0x40000000到0x5FFFFFFF的512MB的地址存储空间是用于片上外设;
在0x20000000到0x3FFFFFFF的512MB的地址存储空间是片上SRAM;STM32F103VET处理器64kB,起始地址是0x20000000到0x20010000。
在0x00000000到0x1FFFFFFF的512MB的地址存储空间是代码区;STM32F103VET处理器512kB,起始地址是0x80000000到0x1FFFFFFF。
 
27.基于 CMSIS 标准的软件架构分为那几层?其中的 CMSIS 层一般由哪几部分组成?


        基于CMSIS标准的软件架构主要分为以下四层:用户应用层,操作系统层,CMSIS层以,硬件寄存器层。
        其中CMSIS层起着承上启下的作用,一方面该层对硬件寄存器层进行了统一的实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义,另一方面又向上层的操作系统和应用层提供接口,

28.DAC有两个寄存器,

一个是DHR(Data HoldingRegister)数据保持寄存器,一个DOR(Data Output Register)数据输出寄存器。真正起作用的是DOR寄存器,该寄存器把值给数模转换发生单元输出以VREF+为参考电压的电压值。如果是硬件触发转换,系统将在1个ABP时钟周期后把值给DOR,如果是软件触发转换,时间为3个APB时钟周期。然后,均等待Tsetting时间(Typical为3us,Max为4us)后真正输出电压值。

29.下载程序:

一种为ICP(在线编程),适用于JTAG或SWD协议下的烧写程序。
另一种成为IAP(在应用编程),适用于很多接口(USB,串口,CAN)下载到存储器中,IAP允许在程序运行时重新烧写FLASH。


30.内部上下拉电阻的设置:

        如果外部的按键另一头接地,那么需要设置成上拉电阻。(理由是当没有按下按键时,由于上拉,输入为高电平;按下时,由于外部接地,输入为低电平。)同理,如果外部的按键另一头接高电平,那么需要设置成下拉电阻。

31.串口中断TXE和TC的区别:

        其实很明显,一个是发送寄存器空标志,一个是发送完成标志。因为串口在发送的时候首先需要把发送寄存器中的数据移位到移位寄存器(影子寄存器)后再串行发送出去。所以当发送寄存器DR空时说明现在可能正在往外面发送数据,数据可能还没有发送完。但是发送完成不一样,他是在移位寄存器将本次数据全部移位完成后设置的标志位(也就是发送完了停止位)。这么看来:TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。

32.定时器中断溢出更新时间:Tout=((arr+1)*(psc+1))/Tclk,ARR为自动装载寄存(1~65535)、PSC为分频系数,TCLK为输入时钟频率(Mhz)。

33.PWM1和PWM2模式的区别仅在于相位的180度。前者高电平时,后者低电平。

34.定时器输入捕捉有一个滤波器,顾名思义滤波器起到的就是滤波的作用,在捕捉外部信号时,信号可能不稳定,此时需要滤波:当检测到有外部输入时,需要再连续采样N次如果确定为高电平/低电平,则触发响应中断(如果开启了的话)。

35.常用的汉字内码系统有GB2313、GB13000、GBK、BIG5(繁体)。其中GB2313只有几千个汉字,而GBK则有2万多汉字
 

你可能感兴趣的:(stm32,单片机,嵌入式硬件)