




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章
STM32的主要功能
本章简介9.1通用I/O和复用功能I/O
9.2中断和事件9.3通用定时器9.4串口通信接口9.5模数转换9.6DMA9.1.1GPIO介绍9.1.2GPIO寄存器描述9.1.3复用功能I/O和调试配置介绍9.1.4AFIO寄存器描述9.1.5GPIO应用程序设计——流水灯实验9.1通用I/O和复用功能I/O9.1.1GPIO介绍STM32F103微控制器的GPIO资源比较丰富,共有7组通用GPIO端口:GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG。每一组GPIO端口有16个引脚。故一共有112个多功能双向5V兼容的快速I/O端口,而且所有的I/O端口可以映射到16个外部中断。GPIO的8种工作模式:(1)浮空输入:用于不确定的高低电平输入,例如按键识别或者USART接收端Rx口的输入。(2)上拉输入:用于上拉至高电平输入。(3)下拉输入:用于下拉至低电平输入。(4)模拟输入:用于外部模拟输入,或者低功耗下省电。(5)开漏输出:可以输出低电平和高电平。它可用于较大功率驱动的输出,如LED、蜂鸣器的输出引脚。(6)推挽输出:只能输出低电平。若想强制输出高电平,则需要在硬件上外接上拉电阻和上拉电源。(7)复用功能开漏输出:具有开漏输出的功能,还有使用片内外设功能。(8)复用功能推挽输出:具有推挽输出的功能,还有使用片内外设功能。9.1.1GPIO介绍GPIO特点:每个I/O端口位可以自由编程,但I/O端口寄存器必须要按32位字的方式被访问(不允许以半字或字节的形式访问)。所有端口都有外部中断能力,为了使用外部中断线,端口必须配置成输入模式。9.1.1GPIO介绍9.1.2GPIO寄存器描述STM32的每个GPIO端口共有7组寄存器:(1)两个32位配置寄存器:GPIOx_CRL和GPIOx_CRH;(2)两个32位数据寄存器:GPIOx_IDR和GPIOx_ODR;(3)1个32位置位/复位寄存器:GPIOx_BSRR;(4)1个16位位置位寄存器:GPIOx_BRR;(5)1个32位锁定寄存器:GPIOx_LCKR。常用I/O端口寄存器有4个:CRL、CRH、IDR和ODR。1、配置寄存器(CRL、CRH)CRL和CRH是配置寄存器,控制着每个I/O口的工作模式及输出速度。STM32中一组GPIOx里面共有16个I/O端口。若要配置一个I/O端口,需配置这个端口的工作模式(CNFy[1:0])和输出速度(MODEy[1:0])。在STM32中一组GPIOx的配置是由两个32位寄存器组成,分别为端口配置低位寄存器(GPIOx_CRL)和端口配置高位寄存器(GPIOx_CRH)。9.1.2GPIO寄存器描述1、配置寄存器(CRL、CRH)(1)端口配置低位寄存器(GPIOx_CRL,x=A,…,G)偏移地址:0x00复位值:0x44444444位格式:9.1.2GPIO寄存器描述9.1.2GPIO寄存器描述CRL各位配置:(2)端口配置高位寄存器(GPIOx_CRH,x=A,…,G)偏移地址:0x04复位值:0x44444444位格式:9.1.2GPIO寄存器描述9.1.2GPIO寄存器描述CRH各位配置:2、数据寄存器(IDR、ODR)(1)端口数据输入寄存器(GPIOx_IDR,x=A,…,G)偏移地址:0x08复位值:0x0000XXXX位格式:
9.1.2GPIO寄存器描述寄存器各位说明:9.1.2GPIO寄存器描述(1)端口数据输入寄存器(GPIOx_IDR,x=A,…,G)(2)端口数据输出寄存器(GPIOx_ODR,x=A,…,G)偏移地址:0Ch复位值:0x00000000位格式:
9.1.2GPIO寄存器描述寄存器各位说明:9.1.2GPIO寄存器描述(2)端口数据输出寄存器(GPIOx_ODR,x=A,…,G)9.1.3复用功能I/O和调试配置介绍1、引脚复用GPIO的8种工作模式,有两种工作模式涉及I/O复用功能:复用功能开漏输出和复用功能推挽输出。STM32微控制器有很多的片内外设,这些外设的外部引脚都是与GPIO复用的。STM32一个GPIO如果可以复用为片内外设的功能引脚,那么当这个GPIO作为片内外设使用的时候,称为引脚复用。2、重映射重映射有部分重映射和完全重映射两类。(1)部分重映射:功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。(2)完全重映射:功能外设的所有引脚都重新映射。9.1.3复用功能I/O和调试配置介绍片内外设串行通信接口3(USART3)为例:9.1.3复用功能I/O和调试配置介绍地址偏移:0x00复位值:0x00000000位格式:1、事件控制寄存器(AFIO_EVCR)9.1.4AFIO寄存器描述寄存器各位说明:9.1.4AFIO寄存器描述1、事件控制寄存器(AFIO_EVCR)地址偏移:0x0C复位值:0x0000位格式:2、外部中断配置寄存器(AFIO_EXTICRx,x=1,…,5)9.1.4AFIO寄存器描述寄存器各位说明:9.1.4AFIO寄存器描述2、外部中断配置寄存器(AFIO_EXTICRx,x=1,…,5)1、功能要求控制STM32连接的两个LED灯交替闪烁以实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的I/O口输出。2、硬件设计控制STM32连接的两个LED灯交替闪烁以实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的I/O口输出。9.1.5GPIO应用程序设计—流水灯实验2、硬件设计9.1.5GPIO应用程序设计—流水灯实验PE5和PB5引脚应配置为推挽输出模式;当引脚输出低电平(0V)时,LED灯亮;输出高电平(3.3V)时,LED灯熄灭。3、软件设计(1)主流程本实例由一个初始化函数加一个无限循环函数构成。(2)初始化I/O口包含了一个函数voidled_init,功能是用于配置PB5和PE5为推挽输出。在配置STM32外设的时候,要先使能该外设的时钟。APB2ENR是APB2总线上的外设时钟使能寄存器,要使能的PORTB和PORTE的时钟使能位分别在bit3和bit6,只要将这两位置1就可以使能PORTB和PORTE的时钟了。将PB5和PE5的模式置为推挽输出,且默认输出1。9.1.5GPIO应用程序设计—流水灯实验9.1.5GPIO应用程序设计—流水灯实验(3)延时子程序4、代码实现——主函数main.c的程序代码#include"gpio.h"//包含GPIO寄存器地址映射头文件#include"clock.h"//包含系统时钟初始化头文件,这部分内容之后讲解/*----函数声明----*/voidled_init(void);//led初始化函数声明voiddelay(void);//延时函数声明/*----主函数----*/intmain(void){Stm32_Clock_Init(9);//系统时钟初始化,9分频实现72MHz,这部分内容之后讲解led_init();while(1){rGPIOB_ODR=~0x20;//bit5置0,其他位全部置1,PB5输出低电平,DS0亮rGPIOE_ODR=0xFFFFFFFF;//所有位置1,PE5输出高电平,DS1熄灭delay();//延时rGPIOB_ODR=0xFFFFFFFF;//PB5输出高电平,DS0熄灭rGPIOE_ODR=~0x20;//PE5输出低电平,DS1亮delay();//延时}}9.1.5GPIO应用程序设计—流水灯实验/*---led初始化函数---*/voidled_init(void){rRCC_APB2ENR|=1<<3;//打开GPIOB时钟rRCC_APB2ENR|=1<<6;//打开GPIOB时钟rGPIOB_CRL=0x00500000;//设置PB5为普通推挽输出模式rGPIOB_ODR=0xFFFFFFFF;//默认PB5输出高电平rGPIOE_CRL=0x00500000;//设置PB5为普通推挽输出模式rGPIOE_ODR=0xFFFFFFFF;//默认PB5输出高电平}/*---延时函数---*/voiddelay(void){unsignedinti,j;for(i=0;i<1000;i++)for(j=0;j<2000;j++);}9.1.5GPIO应用程序设计—流水灯实验4、代码实现——主函数main.c的程序代码#ifndef__GPIO_H__#define__GPIO_H__/*---GPIO相关寄存器地址映射---*/#defineGPIOB_BASE0x40010C00//GPIOB基地址#defineGPIOE_BASE0x40011800//GPIOE基地址#defineGPIOB_CRL(GPIOB_BASE+0x00)#defineGPIOB_ODR(GPIOB_BASE+0x0C)#defineGPIOE_CRL(GPIOE_BASE+0x00)#defineGPIOE_ODR(GPIOE_BASE+0x0C)#defineRCC_APB2ENR0x40021018#definerGPIOE_CRL(*((unsignedint*)GPIOE_CRL))#definerGPIOE_ODR(*((unsignedint*)GPIOE_ODR))#definerGPIOB_CRL(*((unsignedint*)GPIOB_CRL))#definerGPIOB_ODR(*((unsignedint*)GPIOB_ODR))#definerRCC_APB2ENR(*((unsignedint*)RCC_APB2ENR))#endif9.1.5GPIO应用程序设计—流水灯实验4、代码实现——头文件gpio.h的程序代码如下5、下载验证代码编译完成之后,把代码下载到硬件平台上。正常运行时,两只LED灯交替闪烁,实现了类似跑马灯的效果。9.1.5GPIO应用程序设计—流水灯实验9.2中断和事件
中断系统通常包括:硬件(中断控制器)和软件(中断服务函数)。利用中断系统,微控制器能够控制基于前后台的嵌入式软件架构应用程序,可以实现对外部紧急事件的响应和显著地提高CPU的使用率。掌握中断机制及学会设置中断向量表和编写中断服务程序是初学者的基本技能。9.2中断和事件
9.2.1STM32中断系统的组成9.2.2EXTI及其寄存器描述STM32中断系统为嵌套向量中断控制器(NVIC)9.2.1STM32中断系统的组成(1)68个可屏蔽中断通道(不包含16个Cortex-M3的中断线);(2)16个可编程的优先等级(使用了4位中断优先级);(3)低延迟的异常和中断处理;(4)电源管理控制;(5)嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理晚到的中断。1、异常中断向量表当一个中断申请被CPU接受后,对应的中断服务程序就会执行。为了决定中断服务程序的入口地址,STM32的Cortex-M3内核使用了“异常中断向量表查表机制”。异常中断向量表其实是一个WORD(32位整数)数组,每个下标对应一种中断或者异常,该下标元素的值则是该中断服务程序的入口地址。异常中断向量表的存储位置可设置,通过NVIC中的一个重定位寄存器来指出向量表的地址。9.2.1STM32中断系统的组成部分异常中断向量表:9.2.1STM32中断系统的组成9.2.1STM32中断系统的组成部分异常中断向量表(续):9.2.1STM32中断系统的组成2、NVIC的优先级和优先级组在NVIC中,中断优先级分为抢占优先级和响应优先级。NVIC只可以配置16种中断向量的优先级,抢占优先级和响应优先级的数量由一个4位的数来决定,共有5种组合方式。注意两点:第一,如果两个中断的抢占优先级和响应优先级都是一样的,则看哪个中断先发生就先执行;第二,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。9.2.1STM32中断系统的组成优先级组表:9.2.2EXTI及其寄存器描述1、EXTI介绍EXTI称为外部中断/事件控制器,是STM32微控制器的一个片上外设,能够在I/O端口产生中断或者事件的请求。GPIO与EXTI的连接方式是PAx~PGx端口的中断事件都连接到EXTIx。例如:PA0~PG0连接到EXTI0、PA1~PG1连接到EXTI1,依此类推PA15~PG15连接到EXTI15。要注意的是:同一时刻EXTIx只能响应一个端口的事件触发,不能够同一时间响应所有的GPIO端口的事件,但可以分时复用。它可以配置为上升沿触发、下降沿触发或双边沿触发。EXTI与GPIO连接:9.2.2EXTI及其寄存器描述2、EXTI及其寄存器描述共6组寄存器9.2.2EXTI及其寄存器描述(1)中断屏蔽寄存器(EXTI_IMR)偏移地址:0x00复位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(2)事件屏蔽寄存器(EXTI_EMR)偏移地址:0x04复位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(3)上升沿触发选择寄存器(EXTI_RTSR)偏移地址:0x08复位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(4)下降沿触发选择寄存器(EXTI_FTSR)偏移地址:0x0C复位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(5)软件中断事件寄存器(EXTI_SWIER)偏移地址:0x10复位值:0x00000000位格式:9.2.2EXTI及其寄存器描述(6)请求挂起寄存器(EXTI_PR)偏移地址:0x14复位值:0xXXXXXXXX位格式:9.2.2EXTI及其寄存器描述9.3通用定时器
定时器实际是一个计数器,能够对微控制器系统内部脉冲或外部输入进行计数。通用定时器不仅能够实现计数和延时的基本功能,还能够实现输入捕获、输出比较和PWM输出等高级功能,连接多种外部设备9.3通用定时器
9.3.1定时器基本介绍9.3.2通用定时器的基本功能9.3.3通用定时器的寄存器描述STM32微控制器内部集成了多个可编程定时器,分为:基本定时器、通用定时器和高级定时器9.3.1定时器基本介绍基本定时器通用定时器高级定时器STM32微控制器的通用定时器是TIMx(如TIM2、TIM3、TIM4和TIM5),具有基本定时器的所有功能。它的主要特性:(1)具有16位递增/递减的自动重装载功能计数器,内部时钟CK_CNT的来源TIM_CLK来自APB1预分频器的输出。(2)具有16位可编程(可实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意数值。(3)具有4个独立通道,每个通道可用于输入捕获、输出比较、PWM生成(边缘或中间对齐模式)、单脉冲模式输出。(4)使用外部信号控制定时器和定时器互连的同步电路。9.3.1定时器基本介绍(5)以下4个事件发生时产生中断或DMA。更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)。触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)。输入捕获。输出比较。(6)支持针对定位的增量(正交)编码器和霍尔传感器电路。9.3.1定时器基本介绍通用定时器是一个由可编程的预分频器驱动的具有自动重装载功能的16位计数器。通用定时器可分为两个部分:计数器TIM_CNT和捕获/比较寄存器TIMx_CCR。计数器TIM_CNT。计数器部分由触发控制器、1个16位预分频器、1个带自动重装载功能寄存器的16位计数器构成。捕获/比较寄存器TIMx_CCR。包括捕获输入部分(数字滤波、多路复用功能和预分频器)和比较输出部分(比较器和输出控制)。9.3.1定时器基本介绍(1)捕获输入:在输入时,捕获/比较寄存器TIM_CCR被用于当(存储)输入脉冲在电平发生翻转时加载脉冲计数器TIM_CNT的当前计数值,从而实现脉冲的频率测量。(2)比较输出:在输出时,捕获/比较寄存器TIM_CCR用来存储一个脉冲数值,把这个数值与脉冲计数器TIM_CNT的当前计数值进行比较,根据比较结果进行不同的电平输出。9.3.1定时器基本介绍1.计数模式9.3.2通用定时器的基本功能计数模式是最基本的工作模式。STM32通用定时器中的16位计数器TIM_CNT有3种计数模式:(1)向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数,并产生一个计数器溢出事件。(2)向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。9.3.2通用定时器的基本功能(3)中心对齐模式(向上/向下计数):计数器从0开始计数到自动装入值(TIMx_ARR),产生一个计数器溢出事件,然后向下计数到1,并产生一个计数器溢出事件,再从0开始重新计数。2.输出比较模式通常用来控制一个输出波形或者指示一段给定的时间已经到时。当捕获/比较寄存器TIM_CCRx的值与脉冲计数器TIM_CNT的计数器相等时:(1)相应的输出引脚可根据设置的编程模式选择以下赋值:置位、复位、翻转或者不变。(2)中断状态寄存器中的相应标志位置位。(3)如果相应的中断屏蔽位置位,则产生中断。(4)如果DMA请求使能置位,则产生DMA请求。9.3.2通用定时器的基本功能2.输出比较模式需要注意的是:使用输出比较模式时,TIM_CCRx寄存器能够在任何时候可通过软件进行更新以控制输出波形的前提条件是不使用预装载寄存器(TIMx_CCMRx寄存器的OCxPE位为0),否则TIMx_CCRx影子寄存器只能在发生下一次更新事件时被更新。9.3.2通用定时器的基本功能3.PWM输出模式STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生PWM输出。STM32高级定时器TIM1、TIM8可以同时产生7路PWM输出(其中,通道1~3:每个通道可输出两路互补PWM;通道4:只能输出一路PWM)。通用定时器可以同时产生4路PWM输出。STM32最多可以同时产生30路PWM输出。9.3.2通用定时器的基本功能TIM3的4个通道相对应的各个引脚以及重映射情况下的各个引脚的位置。9.3.2通用定时器的基本功能3.PWM输出模式PWM计数模式示意:9.3.2通用定时器的基本功能3.PWM输出模式在PWM输出模式下,除了CNT(计数器当前值)ARR(自动重装载值)之外,还多了一个值CCRx(捕获/比较寄存器值)当CNT<CCRx时,TIMx_CHx通道输出低电平;当CNT≥CCRx时,TIMx_CHx通道输出高电平。脉冲宽度调制模式(PWM模式),以产生一个由TIMx_ARR寄存器确定频率,由TIMx_CCRx寄存器确定占空比的信号。9.3.2通用定时器的基本功能3.PWM输出模式每一个捕获/比较通道都是围绕着一个捕获/比较寄存器(包含影子寄存器),包括捕获的输入部分(数字滤波、多路复用和预分频器)和输出部分(比较器和输出控制)。捕获/比较模块由一个预装载寄存器和一个影子寄存器组成。读写过程仅操作预装载寄存器。在捕获模式下,捕获发生在影子寄存器上,然后复制到预装载寄存器中。在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。9.3.2通用定时器的基本功能3.PWM输出模式(1)CCR1寄存器捕获/比较寄存器:设置比较值。(2)CCMR1寄存器OC1M[2:0]位:对于PWM方式下,用于设置PWM模式1或者PWM模式2。(3)CCER寄存器CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。CC1E位:输入/捕获1输出使能。0:关闭,1:打开。PWM输出的模式区别,通过设置寄存器TIMx_CCMR1的OC1M[2:0]位来确定PWM的输出模式。9.3.2通用定时器的基本功能3.PWM输出模式PWM模式1:向上计数,TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平;向下计数,TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。PWM模式2:向上计数,TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平;向下计数,TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。9.3.2通用定时器的基本功能3.PWM输出模式9.3.2通用定时器的基本功能两种PWM输出模式区别:PWM模式只是区别什么时候是有效电平,但并没有确定是高电平有效还是低电平有效。这需要结合CCER寄存器的CCxP位的值来确定。若为PWM模式1,且CCER寄存器的CCxP位为0,则当TIMx_CNT<TIMx_CCR1时,输出高电平;若为PWM模式1,且CCER寄存器的CCxP位为2,则当TIMx_CNT<TIMx_CCR1时,输出低电平。PWM的3种计数模式如下:
(1)向上计数模式以PWM模式1为例:当TIMx_CNT<TIMx_CCRx时,PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为“1”;如果比较值为0,则OCxREF保持为“0”9.3.2通用定时器的基本功能PWM的3种计数模式如下:
9.3.2通用定时器的基本功能(2)向下计数模式在PWM模式1下,当TIMx_CNT>TIMx_CCRx时,参考信号OCxREF为低,否则为高。如果TIMx_CCRx中的比较值大于TIMx_ARR中的自动重装载值,则OCxREF保持为“1”。该模式下不能产生0%的PWM波形。(3)中心对齐模式当TIMx_CR1寄存器中的CMS位不为“00”时,为中心对齐模式(所有其他的配置对OCxREF/OCx
信号都有相同的作用)。根据不同的CMS位设置,比较标志可以在计数器向上计数时被置“1”、在计数器向下计数时被置“1”或在计数器向上和向下计数时被置“1”。TIMx_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。9.3.2通用定时器的基本功能(3)中心对齐模式在TIMx_CCMRx寄存器中的OCxM位写入“110”(PWM模式1)或“111”(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器的OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位(在向上计数或中心对齐模式中),使能自动重装载的预装载寄存器。9.3.2通用定时器的基本功能(3)中心对齐模式TIMx_CRx寄存器的ARPE位决定着是否使能自动重装载的预装载寄存器。根据TIMx_CR1寄存器的APRE位的设置,APRE=0时,预装载寄存器的内容就可以随时传送到影子寄存器,此时两者是互通的;APRE=1时,在每一次更新事件时,才将预装在寄存器的内容传送至影子寄存器。简单地说,ARPE=1,ARR立即生效;APRE=0,ARR下个比较周期生效。9.3.2通用定时器的基本功能4.输入捕获模式在输入捕获模式下,IC1、IC2和IC3、IC4可以分别通过软件设置将其映射到TI1、TI2和TI3、TI4。当每次检测到ICx信号上相应的边沿后,脉冲计数器TIM_CNT的当前值被锁存到捕获/比较寄存器TIM_CCRx中。当捕获事件发生后,则产生中断或者DMA操作。9.3.2通用定时器的基本功能通用定时器共有17个寄存器:9.3.3通用定时器的寄存器描述两个控制寄存器(TIMx_CRx);1个从模式控制寄存器(TIMx_SMCR);1个DMA/中断使能寄存器(TIMx_DIER)1个状态寄存器(TIMx_SR);1个事件产生寄存器(TIMx_EGR);两个捕获/比较模式寄存器(TIMx_CCMRx);1个捕获/比较使能寄存器(TIMx_CCER);1个计数器(TIMx_CNT);1个预分频器(TIMx_PSC);1个自动重装载寄存器(TIMx_ARR)4个捕获/比较寄存器(TIMx_CCRx);1个DMA控制寄存器(TIMx_DCR)。1.控制寄存器(TIMx_CRx)作用:对计数器的计数方式、使能位等进行设置。这里ARPE位为自动重装载预装载允许位。ARPE=0时,TIMx_ARR寄存器没有缓冲;ARPE=1时,TIMx_ARR寄存器被装入缓冲器。偏移地址:0x00复位值:0x0000位格式:9.3.3通用定时器的寄存器描述偏移地址:0x00复位值:0x0000位格式:9.3.3通用定时器的寄存器描述1.控制寄存器(TIMx_CRx)TIMx_CRx寄存器各位说明:9.3.3通用定时器的寄存器描述9.3.3通用定时器的寄存器描述TIMx_CRx寄存器各位说明:2.从模式控制寄存器(TIMx_SMCR)偏移地址:0x08复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_SMCR寄存器各位说明:9.3.3通用定时器的寄存器描述9.3.3通用定时器的寄存器描述TIMx_SMCR寄存器各位说明:9.3.3通用定时器的寄存器描述TIMx_SMCR寄存器各位说明:TIMx内部触发连接如:如果某个产品中没有相应的定时器,则对应的触发信号ITRx也不存在。9.3.3通用定时器的寄存器描述3.DMA/中断使能寄存器(TIMx_DIER)作用:对DMA/中断使能进行配置偏移地址:0x0C复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_DIER寄存器各位说明:9.3.3通用定时器的寄存器描述TIMx_DIER寄存器各位说明:9.3.3通用定时器的寄存器描述4.状态寄存器(TIMx_SR)偏移地址:0x10复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_SR寄存器各位说明:9.3.3通用定时器的寄存器描述9.3.3通用定时器的寄存器描述TIMx_SR寄存器各位说明:9.3.3通用定时器的寄存器描述TIMx_SR寄存器各位说明:5.事件产生寄存器(TIMx_EGR)偏移地址:0x14复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_EGR寄存器各位说明:9.3.3通用定时器的寄存器描述6.捕获/比较模式寄存器(TIMx_CCMRx,x=1,…,2)偏移地址:0x18复位值:0x0000位格式:9.3.3通用定时器的寄存器描述输出模式,TIMx_CCMRx寄存器各位说明:9.3.3通用定时器的寄存器描述9.3.3通用定时器的寄存器描述输出模式,TIMx_CCMRx寄存器各位说明:9.3.3通用定时器的寄存器描述输出模式,TIMx_CCMRx寄存器各位说明:9.3.3通用定时器的寄存器描述输出模式,TIMx_CCMRx寄存器各位说明:输入捕获模式,寄存器各位说明:9.3.3通用定时器的寄存器描述9.3.3通用定时器的寄存器描述输入捕获模式,寄存器各位说明:7、捕获/比较使能寄存器(TIMx_CCER)偏移地址:0x20复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_CCER寄存器各位说明:9.3.3通用定时器的寄存器描述9.3.3通用定时器的寄存器描述TIMx_CCER寄存器各位说明:标准OCx通道的输出控制位:9.3.3通用定时器的寄存器描述8.计数器偏移地址:0x24复位值:0x0000位格式:9.3.3通用定时器的寄存器描述寄存器各位说明:9.自动重装载寄存器(TIMx_ARR)偏移地址:0x2C复位值:0x0000位格式:9.3.3通用定时器的寄存器描述寄存器各位说明:10.预分频器(TIMx_PSC)偏移地址:0x28复位值:0x0000位格式9.3.3通用定时器的寄存器描述寄存器各位说明:9.3.3通用定时器的寄存器描述11.捕获/比较寄存器(TIMx_CCRx)作用:在PWM输出模式下,确定比较的值。偏移地址:0x34复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_CCRx寄存器各位说明:9.3.3通用定时器的寄存器描述12.DMA控制寄存器(TIMx_DCR)偏移地址:0x48复位值:0x0000位格式:9.3.3通用定时器的寄存器描述TIMx_DCR寄存器各位说明:9.3.3通用定时器的寄存器描述9.4串行通信接口
通信接口有很多种,例如UART、SPI、I2C、USB等,其中UART(通用异步收发器)是较常见、使用频繁的通信接口。将从数据通信的基本原理出发,讲述STM32微控制器的UAR模块——USART(通用同步/异步收发器)的基本原理及使用。9.4串行通信接口
9.4.1串行通信接口介绍9.4.2USART的基本功能9.4.3USART寄存器描述9.4.1串行通信接口介绍要确保能正确收发数据,通信双方必须事先在物理上建立连接,在逻辑上商定好通信协议。下面从物理层和协议层两个角度介绍UART数据通信的基本原理。9.4.1串行通信接口介绍1、UART物理层UART是一种异步串行全双工通信接口。由于是异步通信,UART没有时钟线;由于是全双工制式,UART需要至少两根数据线实现数据的双向传输;由于是串行通信,收发数据只能一位一位地在各自的数据线上传输。最简单的UART接口可由3根线组成:发送数据线(Tx)、接收数据线(Rx)和地线(GND)UART采用TTL/CMOS的逻辑电平标准表示数据,高电平表示逻辑1,低电平表示逻辑0。UART接口连接方法:9.4.1串行通信接口介绍1、UART物理层2、UART协议层通信协议一般包括3个方面:时序、数据格式和传输速率。UART是异步通信,没有时钟线,也就没有时序。9.4.1串行通信接口介绍9.4.1串行通信接口介绍UART通信是以帧为单位在物理链路上进行传输的。一个数据帧由1位起始位、5~8位数据位、0/1位校验位和1/1.5/2位停止位4个部分构成。UART数据格式示意图:UART通信双方必须事先约定相同的传输速率收发数据。UART数据传输速率可以用波特率来表示。波特率,每秒传送码元的个数,单位是baud。常用的UART传输速率有9600、19200、115200(单位为baud)等。根据约定的传输速率和所要传输的数据大小,可以得出通过UART发送全部数据所需的时间。9.4.1串行通信接口介绍9.4.2USART的基本功能STM32微控制器的USRT模块被称为USART。它在具有UART基本功能的同时,还具有同步单向通信功能。STM32F103拥有5个USART+两个UART。(1)USART1位于高速APB2总线上,其他的USART和UART位于APB1总线上。(2)全功能可编程串行接口特性:包括数据位(8或9位)、校验位(奇、偶或无)、停止位(1或2位);支持硬件流控制(CTS或RTS)。(3)自带可编程波特率发生器(整数部分12位,小数部分4位),最高传输速率可达4.5Mbit/s。(4)两个独立带中断的标志位:发送标志位TXE和接收标志位RXNE。(5)支持DMA传输,发送DMA请求和接收DMA请求。(6)支持单线半双工通信。USART主要具有以下特性:9.4.2USART的基本功能USART的GPIO复位功能配置:9.4.2USART的基本功能1、内部结构USART结构自下而上可分为波特率控制、收发控制和数据存储转移3大部分。9.4.2USART的基本功能(1)在波特率控制部分,将USART外设时钟源经过USART的分频系数——USARTDIV分频后,分别输出作为发送器的时钟、接收器的时钟、控制发送的时序,还有控制接收的时序。通过改变外设时钟源的分频系数USARTDIV,就可以实现对USART波特率的控制。(2)收发控制部分主要由USART控制寄存器(CR1、CR2、CR3)和USART状态寄存器(SR)组成。通过对以上控制寄存器写入各种参数,可以控制USART数据的收发。同时,通过读取状态寄存器,还可以查询USART当前的状态。(3)数据存储转移部分主要由两个移位寄存器——发送移位寄存器和接收移位寄存器组成。这两个寄存器负责收发数据并做并串转换。9.4.2USART的基本功能USART收发过程:9.4.2USART的基本功能2、USART中断STM32的USART主要涉及的中断事件如下表所示。各种中断事件都被连接在同一个中断向量。9.4.2USART的基本功能3、使用DMA进行USART通信USART可利用DMA进行连续通信。每个USART有一个DMA发送请求和一个DMA接收请求,分别映射到不同的DMA通道上。当传输或接收完成DMA控制器指定的数据量时,DMA控制器都会在DMA通道的中断向量上产生一个中断。9.4.2USART的基本功能9.4.3USART寄存器描述与USART有关的寄存器一共有7个,分别是:1个状态寄存器(USART_SR),1个数据寄存器(USART_DR),1个波特比率寄存器(USART_BRR),3个控制寄存器(USART_CRx)1个保护时间和预分频寄存器(USART_GTPR)。1、状态寄存器(USART_SR)地址偏移:0x00复位值:0x00C0位格式:9.4.3USART寄存器描述USART_SR寄存器各位说明:9.4.3USART寄存器描述9.4.3USART寄存器描述USART_SR寄存器各位说明:9.4.3USART寄存器描述USART_SR寄存器各位说明:9.4.3USART寄存器描述USART_SR寄存器各位说明:2、数据寄存器(USART_DR)地址偏移:0x04复位值:不确定
位格式:9.4.3USART寄存器描述USART_DR寄存器各位说明:9.4.3USART寄存器描述3、波特比率寄存器(USART_BRR)地址偏移:0x08复位值:0x0000位格式:9.4.3USART寄存器描述USART_BRR寄存器各位说明:9.4.3USART寄存器描述4、控制寄存器(USART_CRx)地址偏移:0x0C复位值:0x0000位格式:9.4.3USART寄存器描述USART_CRx寄存器各位说明:9.4.3USART寄存器描述9.4.3USART寄存器描述USART_CRx寄存器各位说明:9.4.3USART寄存器描述USART_CRx寄存器各位说明:9.4.3USART寄存器描述USART_CRx寄存器各位说明:5、保护时间和预分频寄存器(USART_GTPR)地址偏移:0x18复位值:0x0000位格式:9.4.3USART寄存器描述USART_GTPR寄存器各位说明:9.4.3USART寄存器描述9.5模数转换
模数转换器(ADC)是一种将连续变化的模拟信号转换为离散变化的数字信号的电子器件。嵌入式系统都是数字系统,通过ADC,增加了嵌入式系统模拟输入的功能,搭建了以数字处理为中心的嵌入式系统与现实模拟世界沟通的“桥梁”。9.5模数转换
9.5.1模数转换介绍9.5.2模数转换操作9.5.3模数转换寄存器描述9.5.1模数转换介绍自然界中绝大部分的信号都是模拟信号,例如温度、湿度、光照强度、加速度、压力等。通过传感器,能够将这些物理信号都转换为电子设备才能识别的模拟电信号。但是由于嵌入式系统都是数字系统,不能处理模拟电信号,因此需要用ADC将其转换为数字信号。1、ADC的主要性能参数ADC的主要性能参数有量程、分辨率、精度和转换时间等。(1)量程。量程是指ADC所能转换的模拟输入电压的范围。量程分为单极性和双极性两种类型,STM32微控制器的ADC模块使用0~3.3V的单极性量程。9.5.1模数转换介绍(2)分辨率。分辨率是指ADC所能分辨的最小模拟输入量,即ADC输出一个最小数字信号时所对应的最小模拟输入信号。其中,r为分辨率;U为量程;n为量化位数。9.5.1模数转换介绍1、ADC的主要性能参数(3)精度。精度是指ADC的实际数字输出(以二进制的形式输出)与理论上的数字输出之差,反映了转换结果的误差大小程度。9.5.1模数转换介绍1、ADC的主要性能参数(4)转换时间。转换时间是完成一次A/D转换所需要的时间。ADC的转换时间等于ADC采样时间与ADC量化编码时间之和。2、STM32微控制器的ADC主要特性(1)每个ADC最多有18路模拟输入通道,可测量16个外部信号和2个内部信号。(2)ADC供电要求为2.4~3.6V。9.5.1模数转换介绍STM32内部集成1~3个12位逐次逼近型ADC,其ADC还提供一个精度较低的温度传感器。(3)ADC可测模拟输入信号VIN的范围为VREF-≤VIN≤VREF+。其中VREF-和VREF+分别是ADC使用的正极和负极参考电压,如果需要测量负电压或测量的电压超出范围时,要先经过运算电路进行平移或利用电阻分压再输入ADC。9.5.1模数转换介绍2、STM32微控制器的ADC主要特性(4)ADC的模数转换可以单次、连续、扫描或间断模式进行,每次转换结束后,转换结果以左对齐或者右对齐方式存储在16位数据寄存器中,同时可以产生中断请求,并且ADC1和ADC3可产生DMA请求。9.5.1模数转换介绍2、STM32微控制器的ADC主要特性(5)ADC可将18路通道分为规则通道组和注入通道组,其中规则通道组最多包含16路通道,注入通道组最多包含4路通道。并且,仅有规则通道组可以产生DMA请求。(6)当系统时钟为56MHz、ADC时钟为14MHz、ADC采样时间为1.5个ADC周期时钟时,ADC获得的最短转换时间为1μs。9.5.1模数转换介绍2、STM32微控制器的ADC主要特性3、STM32微控制器的ADC内部结构9.5.1模数转换介绍3、STM32微控制器的ADC内部结构9.5.1模数转换介绍VDDA和VSSA分别连接到VDD和VSS。VDD是3.3V,VSS接地,模拟输入信号不要超过VDD(3.3V)。来自ADC预分频器的ADCCLK是ADC模块的时钟来源。由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。RCC控制器为ADC时钟提供一个专用的可编程预分频器。4、ADC时钟配置偏移地址:0x04复位值:0x00000000访问:0~2个等待周期后,ADC可以进行字、半字和字节访问。只有当访问发生在时钟切换时,才会插入1个或2个等待周期。9.5.1模数转换介绍5、ADC通道选择规则通道组:最多可以安排16个通道。规则通道组和它的转换顺序在ADC_SQRx寄存器中选择,规则通道组转换的总数应写入ADC_SQR1寄存器的L[3:0]中。注入通道组:最多可以安排4个通道。注入通道组和它的转换顺序在ADC_JSQR寄存器中选择,注入通道组里转换的总数应写入ADC_JSQR寄存器的L[1:0]中。9.5.1模数转换介绍需要注意的是,如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。9.5.1模数转换介绍5、ADC通道选择9.5.2模数转换操作1、ADC转换方式STM32的ADC各通道可以组成规则通道组或注入通道组,但是转换模式可以有单次模式、连续模式、扫描模式和间断模式。(1)单次模式在单次转换模式下,ADC只执行一次转换。既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动,也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。规则通道的转换数据存储在16位ADC_DR寄存器中,转换结束EOC标志位将置位,如设置了EOCIE,则产生中断。注入通道的转换数据存储在16位ADC_DRJ1寄存器中,转换结束JEOC标志位将置位,如设置了JEOCIE位,则产生中断。9.5.2模数转换操作1、ADC转换方式(2)连续模式前面ADC转换一结束,就立刻启动另一次转换。可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。规则通道的转换数据被存储在16位ADC_DR寄存器中,EOC标志位被置位,如设置了EOCIE,则产生中断。注入通道的转换数据被存储在16位的ADC_DRJ1寄存器中,JEOC标志位被置位,如设置了JEOCIE位,则产生中断。9.5.2模数转换操作1、ADC转换方式(3)扫描模式扫描模式用来扫描一组模拟通道。可通过设置ADC_CR1寄存器的SCAN位来选择。若SCAN置位,ADC扫描所有被ADC_SQRx寄存器(规则通道)或ADC_JSQR(注入通道)选中的所有通道。在每个组的每个通道上执行单次转换,在每个转换结束时,同一组的下一个通道被自动转换。若CONT置位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。9.5.2模数转换操作1、ADC转换方式2、模拟看门狗事件如果被ADC转换的模拟电压低于低阈值或高于高阈值,AWD模拟看门狗状态位被设置。阈值位于ADC_HTR和ADC_LTR寄存器的最低12个有效位中。通过设置ADC_CR1寄存器的AWDIE位以允许产生相应中断。比较在对齐之前完成。即在数据保存到数据寄存器之前,就已经完成了比较。通过配置ADC_CR1寄存器,模拟看门狗事件可以作用于1个或多个通道。9.5.2模数转换操作9.5.2模数转换操作模拟看门狗通道选择:3、外部触发转换规则转换、注入转换可以由外部事件触发(例如定时器捕捉、EXTI线)。若设置了EXTTRIG控制位,则外部事件就可触发转换。EXTSEL[2:0]和JEXTSEL[2:0]控制位允许应用程序选择8个可能的事件中的某一个,即可触发规则组和注入组的采样。!注意:当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。9.5.2模数转换操作4、自动校准校准ADC有一个内置自校准模式。通过设置ADC_CR2寄存器的CAL位启动校准。校准结束,CAL位被硬件复位,可以开始正常转换。9.5.2模数转换操作5、数据对齐TM32的ADC是12位逐次逼近型的模数转换器,而数据保存在16位寄存器中,因此ADC_CR2寄存器中的ALIGN位选择转换后数据存储的对齐方式,分别为左对齐和右对齐两种方式。注入组通道转换的数据值已经减去了在ADC_JOFRx寄存器中定义的偏移量,因此结果可以是一个负值。SEXT位是扩展的符号值。对于规则组通道,不需减去偏移值,因此只有12位有效。9.5.2模数转换操作数据右对齐示意:9.5.2模数转换操作数据左对齐示意:6、通道采样时间ADC使用若干个ADC_CLK周期对输入电压采样,采样周期数可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每个通道可以分别用不同的时间采样。9.5.2模数转换操作总转换时间计算公式如下:9.5.2模数转换操作6、通道采样时间例如,当ADC时钟频率为14MHz,采样周期为1.5个周期时,TCONV=1.5+12.5=14个周期=1μs。故而,ADC的最小采样时间为1μs(在ADC时钟频率为14MHz、采样周期为1.5个周期下得到)。TCONV=采样周期+12.5个周期7、ADC工作过程9.5.2模数转换操作(1)输入信号经过ADC的输入信号通道ADCx_IN0~ADCx_IN15被送到ADC部件。(2)ADC需要受到触发信号后才开始进行A/D转换,触发信号可使用软件触发,也可用EXTI外部触发或定时器触发。(3)ADC部件接收到触发信号后,在ADC时钟ADCCLK的驱动下,对输入通道的信号进行采样、量化和编码。(4)ADC完成转换后将转换后的12位数值以左对齐或右对齐的方式保存到一个16位的规则通道数据寄存器或者是注入通道数据寄存器中,并产生ADC转换结束/注入转换结束事件,可触发中断和DMA请求。这时用户可编写代码或者以DMA
方式把这个数值存储到自定义的变量中。9.5.3模数转换寄存器描述与ADC相关的寄存器一共有10类20个:1个ADC状态寄存器(ADC_SR);两个ADC控制寄存器(ADC_CRx);两个ADC采样时间寄存器(ADC_SMPRx);4个ADC注入通道数据偏移寄存器(ADC_JOFRx,x=1,…,4);1个ADC看门狗高阈值寄存器(ADC_HTR);1个ADC看门狗低阈值寄存器(ADC_LRT);3个ADC规则序列寄存器(ADC_SQR);1个ADC注入序列寄存器(ADC_JSQR);4个ADC注入数据寄存器(ADC_JDRx,x=1,…,4);1个ADC规则数据寄存器(ADC_DR)。1、ADC状态寄存器(ADC-SR)作用:存放ADC转换过程中的各种状态位。地址偏移:0x00复位值:0x00000000位格式:9.5.3模数转换寄存器描述9.5.3模数转换寄存器描述ADC-SR寄存器各位说明:ADC-SR寄存器各位说明:9.5.3模数转换寄存器描述2、ADC控制寄存器(ADC_CRx)作用:设置扫描转换模式、中断允许(转换结束、注入转换结束、模拟看门狗)、双模式选择(一般选用独立模式)等。注意:在扫描模式下,转换由ADC_SQRx或ADC_JSQRx寄存器选中的通道。如果设置了EOCIE或者JEOCIE,在最后一个通道转换完后才会产生EOC或者JEOC中断。9.5.3模数转换寄存器描述2、ADC控制寄存器(ADC_CRx)地址偏移:0x04复位值:0x00000000位格式:9.5.3模数转换寄存器描述9.5.3模数转换寄存器描述寄存器各位说明如表9-44所示。9.5.3模数转换寄存器描述ADC_CRx寄存器各位说明:9.5.3模数转换寄存器描述9.5.3模数转换寄存器描述ADC_CRx寄存器各位说明:9.5.3模数转换寄存器描述ADC_CRx寄存器各位说明:9.5.3模数转换寄存器描述ADC_CRx寄存器各位说明:3、ADC采样时间寄存器(ADC_SMPRx)作用:设置ADC各通道的采样时间。地址偏移:0x0C复位值:0x00000000位格式:9.5.3模数转换寄存器描述ADC_SMPRx寄存器各位说明:9.5.3模数转换寄存器描述4、ADC注入通道数据偏移寄存器(ADC_JOFRx)作用:设置ADC注入通道数据偏移。地址偏移:0x14-0X20复位值:0x00000000位格式:9.5.3模数转换寄存器描述ADC_JOFRx寄存器各位说明:9.5.3模数转换寄存器描述9.6DMA
DMA(直接存储器访问)是计算机系统中用于快速、大量数据交换的重要技术。它能减轻CPU的负担、提高数据传输的效率、减少应用开发程序的代码量。9.6DMA
9.6.1DMA的特性及操作流程9.6.2DMA的寄存器描述STM32微控制器有两个DMA,每个DMA有若干个触发通道,每个通道可以管理来自多个外设对存储器的访问请求。而且每个外设的DMA请求,可以独立地被开启和关闭。9.6.1DMA的特性及操作流程DMA原理图9.6.1DMA的特性及操作流程1、DMA的主要特性(1)拥有12个独立可配置的通道(请求):DMA1有7个通道,DMA2有5个通道。(2)每个通道连接专用的硬件DMA请求,每个通道都同样支持软件触发,这些功能由软件来配置。(3)在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有4级:很高、高、中和低),优先权设置相等时由硬件决定(请求0优先于请求1,依此类推)。9.6.1DMA的特性及操作流程1、DMA的主要特性(4)独立设置数据源到目标数据区的传输宽度(字节、半字、字),模拟打包和拆包的过程。源地址和目标地址必须按数据传输宽度对齐。(5)支持循环的缓冲器管理。(6)每个通道都有3个事件标志(DMA半传输、DMA传输完成和DMA传输出错),这3个事件标志通过逻辑或操作组合成为一个单独的中断请求。9.6.1DMA的特性及操作流程1、DMA的主要特性(7)支持存储器与存储器间的传输。(8)支持外设与存储器间、存储器与外设间的双向数据传输。(9)闪存、SRAM、外设的SRAM、APB1、APB2和AHB外设均可作为访问的源和目标。(10)可编程的数据传输数量:最大为6553
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 买羊购销合同范本
- 味多美工作合同范例
- 升降平台加工合同范本
- 厨房杂件采购合同范本
- 咨政课题申报书范文
- 吊扇购销合同范例
- 净菜供货合同范例
- 北京买房还是租房合同范例
- 品牌对接推广合同范本
- 中电投合同范本
- 安徽2025年安徽医科大学第一附属医院临床医技护理管理岗位招聘156人笔试历年参考题库附带答案详解
- 旅游景区股份合作开发协议书范本
- 2025年湖南有色金属职业技术学院单招职业技能测试题库汇编
- 2025年湖南信息职业技术学院单招职业技能测试题库参考答案
- 学情分析方案及学情分析报告范文
- 《CRISPR-Cas9及基因技术》课件
- 《急性冠状动脉综合征》课件
- 【博观研究院】2025年跨境进口保健品市场分析报告
- 游戏直播平台推广合作协议
- 《高科技服装与面料》课件
- 《马克思生平故事》课件
评论
0/150
提交评论