stm32概述

stm32概述

GPIO

gpio输出初始化顺序:

  1. 确定GPIO是输出,通用输出,复用功能还是模拟输入(模式寄存器:moder)
  2. 如果输出还要确定是推挽输出还是开漏输出(输出类型寄存器:otyper)
  3. 配置输出的速度(输出速度寄存器:ospeedr)
  4. 输出的时候内部的上/下拉电阻要不要开启(上拉/下拉寄存器:pupdr)
  5. 具体输出的内容(置位复位寄存器:bsrr和数据输出寄存器:odr)

端口上拉下拉寄存器:例子:在进行外设初始化时如果不希望外设立刻进入工作状态则设置上下拉电阻使片上外设一直处于保持状态(作用:上拉:将一个不确定的高低电平信号通过电阻与vcc相连,固定为高电平 下拉:将一个不确定的信号通过一个电阻与地线相连固定位低电平)

启动文件作用:
  1. 出初始化堆栈指针SP
  2. 初始化PC指针,指向复位程序
  3. 初始化中断向量表
  4. 配置系统时钟
  5. 调用c库函数__main,最终进入c的世界

启动文件讲解:

  • stack栈用于局部变量,函数调用,函数形参的开销
  • EQU:宏定义的伪指令相当于等于,类似于c中的define
  • AREA:告诉汇编器汇编的一个新的代码段或者数据段
  • SPACE:用于分配一定大小的内存空间,单元为字节,标号__initial_sp紧挨着space语句放置,表示栈的结束地址,即栈顶的地址,栈是由高向低生长的
时钟
  • HSE时钟:
  • HSI:高速内部时钟,来源:芯片内部,大小为16M当HSE故障时雄鹰时钟会自动切换到HSI直到HSE启动成功
  • 锁相环时钟:PLLCLK,通过倍频将频率升高
  • SYSCLK最高为168M
  • HCLK:AHB高速总线时钟最高为168M为AHB总线的外设提供时钟,为Cortex系统定时器提供时钟(systick)为内核提供时钟(FCLK)来源:系统时钟分频得到
  • PCLK1:APB1低速总线时钟,最高为42M为APB1总线外设提供时钟 来源:HCLK分频得到通常为4分频
  • PCLK2时钟:APB高速总线时钟,最高为84M为APB2总线外设提供时钟
  • RTC时钟:为芯片内部的RTC提供时钟
  • I2C时钟:有外部的引脚I2S_CKIN或者PLLI2SCLK提供
  • 以太网PHY时钟:
  • USB PHY时钟
  • MCO时钟输出 MCO:把控制器的时钟通过外部的引脚输出可以向外部的设备提供时钟 MCO1为PA8,MCO2为pc9
中断:

NVIC内核里面的一个外设

NVIC处理中断,EXIT管理外部中断(系统异常,外部中断)

NVIC:嵌套向量中断控制器,属于内核外设,管理正则包括内核和片上所有外设的中断相关功能

中断编程的顺序

  1. 使能中断请求
  2. 配置中断优先级分组(只需配置一次即可)
  3. 配置NVIC寄存器,初始化NVIC_InitTypeDef
  4. 编写中断服务函数
通信:

简介:计算机的设备与设备之间或集成电路与集成电路之间进行数据传输

并行与串行:

数据通信方向:全双工(同时收发数据),半双工(不可同时收发数据,可分时收发数据),单工(任何时刻都只能往某一个固定方向传输数据)

同步与异步:在同步通信中数据信号所传输的内容绝大部分就是有效数据,而异步通信中包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大

比特率,波特率

串口通信

物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬件部分。

协议层:协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。其实就是软件部分

串口功能框图:

  1. 引脚:
  2. 数据寄存器
  3. 控制器
  4. 波特率
DMA直接存储区访问

简介:为实现数据高速在外设寄存器与存储器之间或者存储器与存储器之间传输提供了高效的方法。之所以称之为高效,是因为 DMA 传输实现高速数据移动过程无需任何 CPU 操作控制。从硬件层次上来说,DMA 控制器是独立于Cortex-M4内核的,有点类似 GPIO、USART 外设一般,只是 DMA 的功能是可以快速移动内存数据

DMA功能框图:

  1. 通道+流:流是数据传输的一条链路每个DMA控制器有8条独立的数据流,每次传输的数据量最大为65535 通道:每个数据流有8个通道选择,每个通道对应不同的DMA请求
  2. 仲裁器:1.软件阶段,DMA_SXCR:PL 硬件阶段,数据流编号小的优先级大()同一个数据流只能使用一个通道同一个DMA控制器可以使用多个数据流
  3. FIFO:源和目标之间的一个数据中转站
  4. 存储器接口
  5. 外设接口
  6. 编程接口
存储器

种类:

  1. 易失性存储器(RAM DRAM[SDRAM,DDR SDRAM,DDRII SDRAM,DDRIII SDRAM] SRAM)
  2. 非易失性存储器(ROM[MASK ROMF PROM(OTPROM EPROM EEPROM)] FLASH(NOR FLASH ,NAND FLASH) 光盘,软盘,机械硬盘)
I2C读写EEPROM

简介:I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

i2c物理层特点:他是一个支持多设备的总线,“总线”指多个设备公用的信号线,子啊一个i2c通讯总线中,可连接多个i2c通讯设备,之处多个通讯主机及多个通讯从机

一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收发同步

每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访sp问。

在i2c协议中设备每发送一个数据或接受一个数据后都会产生一个数据应答位

I2C基本读写过程:

在这里插入图片描述
通讯复合格式在这里插入图片描述在这里插入图片描述
数据有效性:

I2C 使用 SDA 信号线来传输数据,使用 SCL 信号线进行数据同步。见图数据有效性 。SDA 数据线在 SCL 的每个时钟周期传输一位数据。传输时,SCL 为高电平的时候 SDA 表示的数据有效,即此时的 SDA 为高电平时表示数据“1”,为低电平时表示数据“0”。当 SCL 为低电平时,SDA的数据无效,一般在这个时候 SDA 进行电平切换,为下一次表示数据做好准备
在这里插入图片描述
每次数据传输都以字节为单位,每次传输的字节数不受字节数的限制

地址及数据方向:

I2C总线上的每个设备都有自己的独立地址,I2C规定协议设备地址可以是7为或者10位

响应:

I2C 的数据和地址传输都带响应。响应包括“应答 (ACK)”和“非应答 (NACK)”两种信号。作为数据接收端时,当设备 (无论主从机) 接收到 I2C 传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发送“应答 (ACK)”信号,发送方会继续发送下一个数据;若接收端希望结束数据传输,则向对方发送“非应答 (NACK)”信号,发送方接收到该信号后会产生一个停止信号,结束信号传输
在这里插入图片描述
stm32的i2c特性及架构

方式:1.由于直接控制GPIO引脚电平产生通讯时序时由于由CPU控制每个时刻的引脚状态,称之为“软件模拟I2C”还有“硬件协议”方式,stm31的I2C片上外设专门负责实现I2C通讯协议,只需要配置好该外设它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU 只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理 I2C 协议的方式减轻了CPU 的工作,且使软件设计更加简单。

stm32的I2C架构剖析
在这里插入图片描述
stm32各个系列i2c通讯引脚不同自行查询

数据控制逻辑:

I2C的SDA信号线主要连接到数据移位寄存器上,数据移位寄存器的数据来源及目标是数据寄存器(DR) 地址寄存器(ODR) PEC寄存器以及SDA数据线,向外发送数据时,数据移位寄存器以数据寄存器为数据源把数据一位一位的通过SDA信号线发送出去,从外部接受数据时数据移位寄存器把SDA信号线采样到的数据一位一位存储到数据寄存器中

i2c存储小数:

SPI读写串行Flash

简介:提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合

SPI的三条总线:SCK,MOSI,MISO

数据的有效性:SPI使用MOSI信号线来传输数据,使用SCK信号线进行数据同步,MOSI及MISO数据线在SCK的每个时钟周期传输一位数据且数据输入输出是同时进行的。

spi基本通讯过程:
在这里插入图片描述
CPOL/CPHA通讯模式:

时钟极性 CPOL 是指 SPI 通讯设备处于空闲状态时,SCK 信号线的电平信号 (即 SPI 通讯开始前、NSS 线为高电平时 SCK 的状态)。CPOL=0 时,SCK 在空闲状态时为低电平,CPOL=1 时,则相反。

时钟相位 CPHA 是指数据的采样的时刻,当 CPHA=0 时,MOSI 或 MISO 数据线上的信号将会在SCK 时钟线的“奇数边沿”被采样。当 CPHA=1 时,数据线在 SCK 的“偶数边沿”采样。
在这里插入图片描述
偶数边沿采样:在这里插入图片描述
spi模式:
在这里插入图片描述
数据控制逻辑:

SPI色MOSI及MISO都连接到数据位移寄存器上,数据唯一寄存器上的数据来源于接收缓冲区及发送缓冲区,通过写SPI 的”数据寄存器DR“把数据填充到发送缓冲区中,通过读“数据寄存器DR”可以获取接受缓冲区中的内容

spi工作原理总结:

  1. 硬件上为4根线
  2. 主机和从机都有一个串行位移寄存器。主机通过他的SPI串行寄存器写入一个字节来发起一次传输
  3. 串行移位寄存器通过MOSI信号线将字节传送给从机,从机将自己的串行移位寄存器中的内容通过MISO信号线返回给主机,这样,两个移位寄存器中的内容就被交换
  4. 外设的写操作和读操作是同步完成的,如果只进行写操作,主机只需忽略接受到的字节反之若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输

stm32的SPI架构剖析
在这里插入图片描述
stm32f404 spi外设通讯过程:
在这里插入图片描述
文件系统:

FatFs 文件系统简介:FatFs 是面向小型嵌入式系统的一种通用的 FAT 文件系统。它完全是由 ANSIC 语言编写并且完全独立于底层的 I/O 介质。因此它可以很容易地不加修改地移植到其他的处理器当中,如 8051、PIC、AVR、SH、Z80、H8、ARM 等。FatFs 支持 FAT12、FAT16、FAT32 等格式,所以我们利用前面写好的 SPI Flash 芯片驱动,把 FatFs 文件系统代码移植到工程之中,就可以利用文件系统的各种函数,对 SPI Flash 芯片以“文件”格式进行读写操作了。

FatFs 程序结构图:
在这里插入图片描述
fsmc扩展外部SRAM
在这里插入图片描述
SRAM信号线:
在这里插入图片描述
)]SRAM的控制只需要控制信号线使能访问,从地址先输入要访问的地址即可从I/O数据线写入或读出数据

存储器矩阵:
在这里插入图片描述
地址译码器,列I/O及I/O数据电路

地址译码器把 N 根地址线转换成 2N 根信号线,每根信号线对应一行或一列存储单元,通过地址线找到具体的存储单元,实现寻址。如果存储阵列比较大,地址线会分成行和列地址,或者行、列分时复用同一地址总线,访问数据寻址时先用地址线传输行地址再传输列地址。本实例中的SRAM 比较小,没有列地址线,它的数据宽度为 16 位,即一个行地址对应 2 字节空间,框图中左侧的 A0-A18 是行址信号,18 根地址线一共可以表示18=28x1024=512K 行存储单元,所以它一共能访问 512Kx16bits 大小的空间。访问时,使用 UB# 或 LB# 线控制数据宽度,例如,当要访问宽度为 16 位的数据时,使用行地址线指出地址,然后把 UB# 和 LB# 线都设置为低电平,那么 I/O0-I/O15 线都有效,它们一起输出该地址的 16 位数据 (或者接收 16 位数据到该地址);当要访问宽度为 8 位的数据时,使用行地址线指出地址,然后把 UB# 或 LB# 其中一个设置为低电平,I/O 会对应输出该地址的高 8 位和低 8 位数据,因此它们被称为数据掩码信号。

SRAM读写流程:
在这里插入图片描述
(1) 主机使用地址信号线发出要访问的存储器目标地址;

(2) 控制片选信号 CS1# 及 CS2# 使能存储器芯片;

(3) 若是要进行读操作,则控制读使能信号 OE# 表示要读数据,若进行写操作则控制写使能信号WE# 表示要写数据;

(4) 使用掩码信号 LB# 与 UB# 指示要访问目标地址的高、低字节部分;

(5) 若是读取过程,存储器会通过数据线向主机输出目标数据,若是写入过程,主要使用数据线向存储器传输目标数据。

读写时序中的重要时间参数:
在这里插入图片描述
FSMC 简介:

STM32F407 系列芯片使用 FSMC 外设来管理扩展的存储器,FSMC 是 Flexible Static Memory Controller 的缩写,译为灵活的静态存储控制器。它可以用于驱动包括 SRAM、NOR FLASH 以及NANDFLSAH 类型的存储器,不能驱动如 SDRAM 这种动态的存储器而在 STM32F429 系列的控制器中,它具有 FMC 外设,支持控制 SDRAM 存储器

FSMC架构剖析:
在这里插入图片描述

FSMC控制SRAM时序
在这里插入图片描述在这里插入图片描述
LCD液晶显示

显示器的基本参数:

1.像素:像素是组成图像的基本单元要素,显示器的像素指它成像最小的点,即前面讲解液晶原理中提到的一个显示单元。

分辨率:一些嵌入式设备的显示器常常以“行像素值 x 列像素值”表示屏幕的分辨率。

色彩深度:色彩深度指显示器的每个像素点能表示多少种颜色,一般用“位”(bit) 来表示

显示器尺寸:显示器的大小一般以英寸表示,如 5 英寸、21 英寸、24 英寸等,这个长度是指屏幕对角线的长度,通过显示器的对角线长度及长宽比可确定显示器的实际长宽尺寸。

点距:点距指两个相邻像素点之间的距离,它会影响画质的细腻度及观看距离,相同尺寸的屏幕,若分辨率越高,则点距越小,画质越细腻。

液晶控制原理:在这里插入图片描述
液晶面板控制信号:
RGB信号线:RGB 信号线各有 8 根,分别用于表示液晶屏一个像素点的红、绿、蓝颜色分量。

同步时钟信号CLK:液晶屏与外部使用同步通讯方式,以 CLK 信号作为同步时钟,在同步时钟的驱动下,每个时钟传输一个像素点数据。

水平同步信号 HSYNC:水平同步信号 HSYNC(Horizontal Sync) 用于表示液晶屏一行像素数据的传输结束,每传输完成液晶屏的一行像素数据时,HSYNC 会发生电平跳变,如分辨率为 800x480的显示屏 (800 列,480 行),传输一帧的图像HSYNC 的电平会跳变 480 次。

垂直同步信号 VSYNC:垂直同步信号 VSYNC(Vertical Sync) 用于表示液晶屏一帧像素数据的传输结束,每传输完成一帧像素数据时,VSYNC 会发生电平跳变。其中“帧”是图像的单位,一幅图像称为一帧,在液晶屏中,一帧指一个完整屏液晶像素点。人们常常用“帧/秒”来表示液晶屏的刷新特性,即液晶屏每秒可以显示多少帧图像,如液晶屏以 60 帧/秒的速率运行时,VSYNC 每秒钟电平会跳变 60 次。

数据使能信号 DE:数据使能信号 DE(Data Enable) 用于表示数据的有效性,当 DE 信号线为高电平时,RGB 信号线表示的数据有效。

液晶数据传输时序:
在这里插入图片描述
显存:液晶屏中的每个像素点都是数据,在实际应用中需要把每个像素点的数据缓存起来,再传输给液晶屏,一般会使用 SRAM 或 SDRAM 性质的存储器,而这些专门用于存储显示数据的存储器,则被称为显存

ADC电压采集:

功能框图:
在这里插入图片描述
电压输入范围:ADC 输入范围为:VREF- ≤ VIN ≤ VREF+。由 VREF-、VREF+ 、VDDA 、VSSA、这四个外部引脚决定。我们在设计原理图的时候一般把 VSSA 和 VREF- 接地,把 VREF+ 和 VDDA 接 3V3,得到 ADC 的输入电压范围为:0.3~3V。如果我们想让输入的电压范围变宽,去到可以测试负电压或者更高的正电压,我们可以在外部加一个电压调理电路,把需要转换的电压抬升或者降压到 03.3V,这样 ADC 就可以测量了。

输入通道:我们确定好 ADC 输入电压之后,那么电压怎么输入到 ADC?这里我们引入通道的概念,STM32 的ADC 多达 19 个通道,其中外部的 16 个通道就是框图中的 ADCx_IN0、ADCx_IN1…ADCx_IN5。这 16 个通道对应着不同的 IO 口,具体是哪一个 IO 口可以从手册查询到。其中 ADC1/2/3 还有内部通道:ADC1 的通道 ADC1_IN16 连接到内部的 VSS,通道 ADC1_IN17 连接到了内部参考电压 VREFINT 连接,通道 ADC1_IN18 连接到了芯片内部的温度传感器或者备用电源 VBAT。ADC2和 ADC3 的通道 16、17、18 全部连接到了内部的 VSS。

规则通道:规则通道:顾名思意,规则通道就是很规矩的意思,我们平时一般使用的就是这个通道,或者应该说我们用到的都是这个通道,没有什么特别要注意的可讲。

注入通道:注入,可以理解为插入,插队的意思,是一种不安分的通道。它是一种在规则通道转换的时候强行插入要转换的一种通道。如果在规则通道转换过程中,有注入通道插队,那么就要先转换完注入通道,等注入通道转换完成后,再回到规则通道的转换流程。这点跟中断程序很像,都是不安分的主。所以,注入通道只有在规则通道存在时才会出现

转换顺序:

规则顺序:规则序列寄存器有 3 个,分别为 SQR3、SQR2、SQR1。SQR3 控制着规则序列中的第一个到第六个转换,对应的位为:SQ1[4:0]~SQ6[4:0],第一次转换的是位 4:0 SQ1[4:0],如果通道 16 想第一次转换,那么在 SQ1[4:0] 写 16 即可。SQR2 控制着规则序列中的第 7 到第 12 个转换,对应的位为:SQ7[4:0]~SQ12[4:0],如果通道 1 想第 8 个转换,则 SQ8[4:0] 写 1 即可。SQR1 控制着规则序列中的第 13 到第 16 个转换,对应位为:SQ13[4:0]~SQ16[4:0],如果通道 6 想第 10 个转换,则SQ10[4:0] 写 6 即可。具体使用多少个通道,由 SQR1 的位 L[3:0] 决定,最多 16 个通道。

注入序列注入序列寄存器 JSQR 只有一个,最多支持 4 个通道,具体多少个由 JSQR 的 JL[2:0] 决定。如果JL 的值小于 4 的话,则 JSQR 跟 SQR 决定转换顺序的设置不一样,第一次转换的不是 JSQR1[4:0],而是 JCQRx[4:0] ,x =(4-JL),跟 SQR 刚好相反。如果 JL=00(1 个转换),那么转换的顺序是从 JSQR4[4:0] 开始,而不是从 JSQR1[4:0] 开始,这个要注意,编程的时候不要搞错。当 JL 等于4 时,跟 SQR 一样

触发源:

软件触发:ADC_CR2 :ADON/SWST 、ART/JSWSTART

外部事件触发:内部定时器/外部IO 选择:ADC_CR2 :EXTSEL[2:0]和 JEXTSEL[2:0] 激活:ADC_CR2 :EXTEN 和

转换时间:转换时间:Tconv = 采样时间 + 12 个周期(12位)

ADC_CLK:ADC模拟电路时钟,最大值为36M,由PCLK2提供,还可分频,2/4/6/8,ADC_CCR 的ADCPRE[1:0]设置。PCLK2=84M。

数字时钟:RCC_APB2ENR,用于访问寄存器

数据寄存器:规则数据寄存器ADC_DR 注入数据寄存器ADC_JDRC 通用数据寄存器ADC_CDR

SDIO:

总线拓扑:SD 卡一般都支持 SDIO 和 SPI 这两种接口,本章内容只介绍 SDIO 接口操作方式,如果需要使用SPI 操作方式可以参考 SPI 相关章节。另外,stm32f4xx 系列控制器的SDIO 是不支持 SPI 通信模式的,如果需要用到 SPI 通信只能使用 SPI 外设。

总线协议:SD 总线通信是基于命令和数据传输的。通讯由一个起始位 (“0”),由一个停止位 (“1”) 终止。SD 通信一般是主机发送一个命令 (Command),从设备在接收到命令后作出响应 (Response),如有需要会有数据 (Data) 传输参与。

命令与交互:
在这里插入图片描述
主机向SD卡写入数据:
在这里插入图片描述
命令:
格式:
在这里插入图片描述
命令组成:

  • 起始位和终止位:命令的主体包含在起始位与终止位之间,它们都只包含一个数据位,起始位为 0,终止位为 1。
  • 传输标志:用于区分传输方向,该位为 1 时表示命令,方向为主机传输到 SD 卡,该位为 0时表示响应,方向为 SD 卡传输到主机。

命令主体内容包括命令、地址信息/参数和 CRC 校验三个部分。

  • 命令号:它固定占用 6bit,所以总共有 64 个命令 (代号:CMD0~CMD63),每个命令都有特定的用途,部分命令不适用于 SD 卡操作,只是专门用于 MMC 卡或者 SD I/O 卡。
  • 地址/参数:每个命令有 32bit 地址信息/参数用于命令附加内容,例如,广播命令没有地址信息,这 32bit 用于指定参数,而寻址命令这 32bit 用于指定目标 SD 卡的地址。
  • CRC7 校验:长度为 7bit 的校验位用于验证命令传输内容正确性,如果发生外部干扰导致传输数据个别位状态改变将导致校准失败,也意味着命令传输失败,SD 卡不执行命令。

四种命令类型:

  • 无响应广播命令 (bc),发送到所有卡,不返回任务响应;
  • 带响应广播命令 (bcr),发送到所有卡,同时接收来自所有卡响应;
  • 寻址命令 (ac),发送到选定卡,DAT 线无数据传输;
  • 寻址数据传输命令 (adtc),发送到选定卡,DAT 线有数据传输

响应:响应由 SD 卡向主机发出,部分命令要求 SD 卡作出响应,这些响应多用于反馈 SD 卡的状态。SDIO 总共有 7 个响应类型 (代号:R1~R7),其中 SD 卡没有 R4、R5 类型响应。特定的命令对应有特定的响应类型,比如当主机发送 CMD3 命令时,可以得到响应 R6。与命令一样,SD 卡的响应也是通过 CMD 线连续传输的。根据响应内容大小可以分为短响应和长响应。短响应是 48bit长度,只有 R2 类型是长响应,其长度为 136bit。

SD卡操作模式:
在这里插入图片描述
卡识别模式:
在这里插入图片描述
卡传输模式:
在这里插入图片描述
高级定时器:

简介:

  • 定时器功能:定时,输出比较,输出捕获,断路输出
  • 分类:基本定时器,通用定时器,高级定时器
  • 定时资源:407有两个高级定时器,10个通用定时器,2个基本定时器

说明:1.计数器16bit上/下/两边计数,TIM1和TIM8还有一个重复计数器RCR独有 2.有4个GOIO其中通道1~3还有互补输出GPIO 3.时钟来自PCLK2可实现1 ~65536分频

滤波器:

1.如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的,

2.由TIMx_CCMx 的位 ICxF[3:0]配置。

边沿检测:

1-边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。

2-由 TIMx_CCER 的位 CCxP 和 CCxNP 配置。

持续输入中。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值