PWR电源相关寄存器PWR_CR(电源控制寄存器)31302928272625242322212019181716保留1514131211109876543210保留DBPPLS[2:0]PVDECSBFCWUFPDDSLPDS8位:DBP取消后备区域写保护。复位值为0。定义:0为禁止写入,1为允许写入。注:如果rtc时钟是HSE/128,必须保持为17-5位:PVD电源电压检测器的电压阀值。定义:000(2.2v),001(2.3v),010(2.4v),011(2.5v),100(2.6v),101(2.7v),110(2.8v),111(2.9v)4位:PVDE电源电压检测器(PVD)使能。定义:0(禁止PVD),1(开启PVD)3位:CSBF清除待机位(始终输出为0)定义:0(无功效),1(清除SBF待机位(写)2位:CWUF清除唤醒位(始终输出为0)定义:0(无功效),1(2个系统时钟周期后清除WUF唤醒位(写)1位:PDDS掉电深睡眠(与LPDS位协同操作)定义:0(当CPU进入深睡眠时进入停机模式,调压器状态由LPDS位控制),1(CPU进入深睡眠时进入待机模式)0位:LPDS深睡眠下的低功耗(PDDS=0时,与PDDS位协同操作)定义:0(在待机模式下电压调压器开启),1(在待机模式下电压调压器处于低功耗模式)PWR_CSR(电源控制/状态寄存器)31302928272625242322212019181716保留1514131211109876543210保留EWUP保留PVDOSBFWUF8位:EWUP使能WKUP引脚。定义:0(WKUP为通用IO),1(用于待机唤醒模式,WKUP引脚被强置为输入下拉的配置(WKUP引脚上的上升沿将系统从待机模式唤醒) 注:复位时清除这一位2位:PVDO-PVD输出(当PVD被PVDE位使能后该位才有效)定义:0(VDD/VDDA高于PLS[2-0]选定的PVD阀值),1(VDD/VDDA低于PLS[2-0]选定的PVD阀值) 注:在待机模式下PVD被停止,因此,待机模式后或复位后,直到设置PVDE位之前,该位为01位:SBF待机标志位(该位由硬件设置,并只能由POR/PDR(上电/掉电复位)或设置电源控制寄存器(PWR_CR)的CSBUF位清除)定义:0(不在待机)1(已待机)0位:WUF唤醒标志(该位由硬件设置,并只能由POR/PDR(上电/掉电复位)或设置电源控制寄存器(PWR_CR)的CWUF位清除) 定义:0(没有唤醒事件),1(在WKUP引脚上发生唤醒事件或出现RTC脑中事件) 注:当WKUP引脚已经是高电平时,在(通过设置EWUP位)使能WKUP引脚时,会检测到一个额外事件BKP——DRx(x=1...10)(备份数据寄存器)151413121110987654321015-0位:备份数据由用户来写数据。注:BKP——DRx寄存器不会被系统复位,电源复位,待机唤醒所复位 它可以由备份域复位来复位或(如果入侵检测引脚TAMPER功能被开启时)由浸入引脚事件复位BKP_RTCCR(RTC时钟校准寄存器)1514131211109876543210保留ASOSASOECCOCAL[6:0]9位:ASOS闹钟或秒输出(当设置ASOE位,ASOS位可用于选择在TAMPER引脚上输出的是RTC秒脉冲还是闹钟脉冲信号)定义:0(输出RTC闹钟脉冲),1(输出秒脉冲)注:后备8位:ASOE允许输出闹钟或秒脉冲(根据ASOS位的置位,该位允许RTC闹钟或秒脉冲输出到TAMPER引脚。脉冲宽度为1个RTC时钟周期。置位时不能开启TAMPER功能)7位:CCO校准时钟输出。定义:0(无影响),1(此位置1可在侵入检引脚输出经64分频后的RTC时钟。当CCO位置1时,必须关闭侵入检测)注:vdd断电,该位清除6-0位:CAL校准值。表示在每2的20次方个时钟脉冲内将有多少个脉冲被跳过。这可用来对RTC进行校准,以1000000/(2的20次方比例减慢时钟)可用被减慢0-121ppmBKP_CR(备份控制寄存器)1514131211109876543210保留TPALTPE1位:TPAL侵入检测TAMPER引脚有效电平。定义:0(检测TAMPER脚高电平清除备份数据)1(检测TAMPER脚低电平清除备份数据)2位:TPE启动入侵检测TAMPER引脚。定义:0(TAMPER脚为普通IO),1(开启检测)注:TPAL、TPE同时置为可用,但同时清零则会出问题。所以推荐在TPE为0时才改变TPAL位状态。BKP_CSR(备份控制/状态寄存器)1514131211109876543210保留TIFTEF保留TPIECTICTE9位:TIF侵入中断标志(当检测有侵入事件且TPIE为1时,此为硬件置1,通过向CTI位写1来清除标志位(同时也清除中断)。如果TPIE被清除,此位也会被清除。 定义:0(无侵入),1(检测到侵入)注:仅当系统复位或由待机模式唤醒后才复位该位8位:TEF侵入事件标志(当检测到侵入事件时此位由硬件置1。通过向CTE位写1可清除此标志位)定义:0(无侵入事件),1(有侵入事件) 注:侵入事件会复位所有的BKP_DRx寄存器。只要TEF为1,所有的BKP_DRx寄存器就一直保持复位状态。当此位被置1时,若对BKP_DRx写操作,则不会保存。2位:TPIE:允许侵入TAMPER引脚中断。定义0(禁止侵入检测中断),1(允许(BKP_CR寄存器TPE位也必须置1) 注:1、侵入检测无法将系统内核从低功耗模式唤醒,2、仅当系统复位或由待机模式唤醒后才复位该位1位:CTI清除侵入检测中断(只能写入,读出值为0)定义:0(无效)1(清除侵入检测中断和TIF侵入检测中断标志)0位:CTE清除侵入检测事件(只能写入,读出值为0)定义:0(无效)1(清除TEF侵入检测事件标志(并复位侵入检测器)RCC时钟相关寄存器31153014121143210HSICAL[7:0]保留HSIRDYHSION25位:PLLRDY-PLL时钟就绪标志(PLL锁定后由硬件置1)定义:0(未锁定),1(锁定)24位:PLLON-PLL使能(手动)定义:0(PLL关闭),1(PLL使能)。进入待机或停机模式时,该位由硬件清零当PLL用作系统始终时,该位不能被清零。19位:CSSON时钟安全系统使能(由软件置1或清零)定义:0(时钟监测器关闭),1(如果外部4-16M振荡器就绪,时钟监测器开启)18位:HSEBYP外部高速时钟旁路。定义:0(晶振4-16M),1(有源晶振25M)。调试模式下由软件控制。只有在4-16M振荡器关闭情况下,才能写入该位。17位:HSERDY外部高速时钟就绪标志(自动)在HSEON位清零后,需6个外部4-25M振荡器周期清零。定义:0(4),16位:HSEON外部高速时钟使能(软件控制)定义:0(HSE关闭),1(HSE开启)。待机或停机模式硬件清零,当用作系统系统时钟时,该位不能清零。15-8位:HSICAL[7:0]-内部高速时钟校准。系统启动时,这些位被自动初始化。7-3位:HSITRIM[4:0]-内部高速时钟调整(软件控制,与HSICAL叠加,相当于手动微调)1位:HSIRDY内部高速时钟就绪标志硬件置1,在HSION清零后,该位需要6个内部8M振荡周期清零。定义:0(没有就绪),1(有就绪)0位:HSION内部高速时钟使能(软件控制)当从待机或停机返回用或外部振荡故障时由硬件置1。若使用内部时钟做系统时钟则不能清零。定义:0(关),1(开)RCC_CFGR(时钟配置寄存器)31302928272625242322212019181716保留MCO[3:0]保留OTGFSPREPLLMUL[3:0]PLLXTPREPLLSRC1514131211109876543210ADCPRE[1:0]PPRE2[2:0]PPRE1[2:0]HPRE[3:0]SWS[1:0]SW[1:0]27-24位:MCO微控制器时钟输出(手动)注:该时钟输出在启动和切换MCO时钟源时可能会被截断。在系统时钟作为MCO引脚时,需保证输出不高于50M 定义:00xx(无输出),0100(系统时钟sysclk输出),0101(内部8M输出),0110(外部25M输出),0111(PLL时钟2分频输出),1000(PLL2输出) 1001(PLL3时钟2分频输出),1010(XT1外部25M输出(为以太网),1011(PLL3时钟输出)22位:OTGFSPRE全速USBOTG预分频(手动)在RCC_APB1ENR寄存器中使能全速OTG时钟之前,必须保证该位已经有效,如OTG时钟被使能则不能清0 定义:0(VCO时钟除3,但必须配置PLL输出为72M),1(VCO时钟除2,但必须配置PLL输出为48M)21-18位:PLLMUL-PLL倍频系数(手动)注:只有在PLL关闭的情况下才能被写入,且PLL的输出频率不能超过72M 定义:000x,10xx,1100(保留),0010(PLL4倍),0011(PLL5倍),0100(PLL6倍),0101(PLL7倍),0110(PLL8倍),0111(PLL9倍),1101(PLL6.5倍)17位:PLLXTPRE-PREDIV1分频因子低位(软件控制)与RCC_CFGR2的0位为同一位。如果RCC_CFGR2[3:1]为000,则该位控制PREDIV1对输入时钟进行2分频(PLLXPRE=1), 或不对输入时钟分频(PLLXPRE=0),只能在关闭PLL时才写入此位16位:PLL输入时钟源(软件控制,且只能在关闭PLL时才写入此位)定义:0(HIS时钟2分频做PLL输入),1(PREDIV1输出做PLL输入) 注:当改变主PLL的输入时钟源时,必须在选定了新的时钟源后才能关闭原来的时钟源15/14位:ADCPRE-ADC预分频(手动)定义:00(PCLK2-2分频),01(PCLK2-4分频),10(PCLK2-6分频),11(PCLK2-8分频)13-11位:PPRE2[2:0]-APB2预分频(手动)定义:0xx(HCLK不分频),100(HCLK2分频),101(HCLK4分频),110(HCLK8分频),111(HCLK16分频)10-8位:PPRE1[2:0]-APB1预分频(手动)定义:0xx(HCLK不分频),100(HCLK2分频),101(HCLK4分频),110(HCLK8分频),111(HCLK16分频),注小于367-4位:HPRE[3:0]-AHB预分频(手动)定义:0xxx(SYSCLK不分频),1000(2分频),1001(4分频),1010(8分频),1011(16分频) 1100(64分频),1101(128分频),1110(256分频),1111(512分频).注:AHB时钟预分频大于1时,必须开预取缓冲器。当使用以太网模块时,频率至少25M3-2位:SWS[1:0]系统时钟切换状态(自动)定义:00(HIS作为系统时钟),01(HSE做系统时钟),10(PLL做系统时钟),11(不可用)29保留132827RCC_CR(时钟控制寄存器)26252423PLLRDYPLLON109872221保留65HSITRIM[4:0]20CSSON19HSEBYP18HSERDY17HSEON161-0位:SW系统时钟切换(手动,自动,自动时时钟安全须开启)定义:00(HIS做系统时钟),01(HSE做系统时钟),10(PLL做系统时钟),11(不可用)RCC_CIR(时钟中断寄存器)313029282726252423222120191817保留CSSC保留PLLRDYCHSERDYCHISRDYCLSERDYCLSIRDYC151413121110987654321保留PLLRDYIEHSERDYIEHSIRDYIELSERDYIELSIRDYIECSSF保留PLLRDYFHSERDYFHSIRDYFLSERDYFLSIRDYF23位:CSSC清除时钟安全系统中断(软件置1)定义:0(无作用),1、清除CSSF安全系统中断标志20位:PLLRDYC清除PLL就绪中断(手动)定义:0(无作用),1(清除PLL就绪中断标志位PLLRDYF)19位:HSERDYC清除HSE就绪中断(手动)定义:0(无作用),1(清除HSE就绪中断标志位HSERDYF)18位:HSIRDYC清除HSE就绪中断(手动)定义:0(无作用),1(清除HSI就绪中断标志位HSIRDYF)17位:LSERDYC清除HSE就绪中断(手动)定义:0(无作用),1(清除LSE就绪中断标志位LSERDYF)16位:LSIRDYC清除HSE就绪中断(手动)定义:0(无作用),1(清除LSI就绪中断标志位LSIRDYF)12位:PLLRDYIE-PLL就绪中断使能(手动)定义:0(PLL就绪中断关闭),1(PLL就绪中断使能)11位:HSERDYIE-HSE就绪中断使能(手动)定义:0(HSE就绪中断关闭),1(HSE就绪中断使能)10位:HSIRDYIE-HSI就绪中断使能(手动)定义:0(HSI就绪中断关闭),1(HSI就绪中断使能)9位:LSERDYIE-LSE就绪中断使能(手动)定义:0(LSE就绪中断关闭),1(LSE就绪中断使能)8位:LSIRDYIE-LSI就绪中断使能(手动)定义:0(LSI就绪中断关闭),1(LSI就绪中断使能)7位:CSSF时钟安全系统中断标志(自动置1,手动CSSC清除)定义:0(无HSE时钟失效产生的中断),1(HSE时钟失效产生中断)4位:PLLRDYF-PLL3就绪中断标志(自动置1,手动PLLRDYC清除)定义:0(无PLL上锁产生的时钟就绪中断),1(PLL上锁导致中断)3位:HSERDYF-HSE就绪中断标志(自动置1,手动HSERDYC清除)0(无中断),1(有中断)2位:HSIRDYF-HSI就绪中断标志(自动置1,手动HSERDYC清除)0(无中断),1(有中断)1位:LSERDYF-LSE就绪中断标志(自动置1,手动HSERDYC清除)0(无中断),1(有中断)0位:LSIRDYF-LSI就绪中断标志(自动置1,手动HSERDYC清除)0(无中断),1(有中断)RCC_APB2RSTR(APB2外设复位寄存器)313029282726252423222120191817保留151413121110987654321ADC3RSTUSART1RSTTIM8RSTSPI1RSTTIM1RSTADC2RSTADC1RSTIOPGRSTIOPFRSTIOPERSTIOPDRSTIOPCRSTIOPBRSTIOPARST保留AFIORST15位:ADC3RST-ADC3接口复位(手动)定义:0(无作用),1(复位ADC3接口)14位:USART1RST-USART1接口复位(手动)定义:0(无作用),1(复位USART1接口)13位:TIM8RST-TIM8接口复位(手动)定义:0(无作用),1(复位TIM8接口)12位:SPI1RSTRST-SPI1接口复位(手动)定义:0(无作用),1(复位SPI1接口)11位:TIM1RST-TIM1接口复位(手动)定义:0(无作用),1(复位TIM1接口)10位:ADC2RST-ADC2接口复位(手动)定义:0(无作用),1(复位ADC2接口)9位:ADC1RST-ADC1接口复位(手动)定义:0(无作用),1(复位ADC1接口)8位:IOPGRST-IOPG接口复位(手动)定义:0(无作用),1(复位IOPG接口)7位:IOPFRST-IOPF接口复位(手动)定义:0(无作用),1(复位IOPF接口)6位:IOPERST-IOPE接口复位(手动)定义:0(无作用),1(复位IOPE接口)5位:IOPDRST-IOPD接口复位(手动)定义:0(无作用),1(复位IOPD接口)4位:IOPCRST-IOPC接口复位(手动)定义:0(无作用),1(复位IOPC接口)3位:IOPBRST-IOPB接口复位(手动)定义:0(无作用),1(复位IOPB接口)1601602位:IOPARST-IOPA接口复位(手动)定义:0(无作用),1(复位IOPA接口)0位:AFIORST辅助功能IO复位(手动)定义:0(无作用),1(复位辅助功能)RCC_APB1RSTR(APB1外设复位寄存器)313029282726252423222120191817保留DACRSTPWRRSTBKPRST保留CANRST保留USBRSTI2C2RSTI2C1RSTUART5RSTUART4RSTUART3RSTUART2RST保留151413121110987654321SPI3RSTSPI2RST保留WWDGRST保留TIM7RSTTIM6RSTTIM5RSTTIM4RSTTIM3RSTTIM2TST29位:DACRST-DAC复位接口(手动)定义:0(无作用),1(复位DAC接口)28位:PWRRST电源复位接口(手动)定义:0(无作用),1(复位PWR接口)27位:BKPRST-备份复位接口(手动)定义:0(无作用),1(复位BKP接口)25位:CANRST-CAN复位接口(手动)定义:0(无作用),1(复位CAN接口)23位:USBRST-USB复位接口(手动)定义:0(无作用),1(复位USB接口)22位:I2C2RST-I2C2复位接口(手动)定义:0(无作用),1(复位I2C2接口)21位:I2C1RST-I2C1复位接口(手动)定义:0(无作用),1(复位I2C1接口)20位:UART5RST-UART5复位接口(手动)定义:0(无作用),1(复位UART5接口)19位:UART4RST-UART4复位接口(手动)定义:0(无作用),1(复位UART4接口)18位:UART3RST-UART3复位接口(手动)定义:0(无作用),1(复位UART3接口)17位:UART2RST-UART2复位接口(手动)定义:0(无作用),1(复位UART2接口)15位:SPI3RST-SPI3复位接口(手动)定义:0(无作用),1(复位SPI3接口)14位:SPI2RST-SPI2复位接口(手动)定义:0(无作用),1(复位SPI2接口)11位:WWDGRST-WWDG复位接口(手动)定义:0(无作用),1(复位WWDG接口)5位:TIM7RST-TIM7复位接口(手动)定义:0(无作用),1(复位TIM7接口)4位:TIM6RST-TIM6复位接口(手动)定义:0(无作用),1(复位TIM6接口)3位:TIM5RST-TIM5复位接口(手动)定义:0(无作用),1(复位TIM5接口)2位:TIM4RST-TIM4复位接口(手动)定义:0(无作用),1(复位TIM4接口)1位:TIM3RST-TIM3复位接口(手动)定义:0(无作用),1(复位TIM3接口)0位:TIM2RST-TIM2复位接口(手动)定义:0(无作用),1(复位TIM2接口)RCC_AHBENR(外设时钟使能寄存器)313029282726252423222120191817保留151413121110987654321保留SDIOEN保留FSMCEN保留CRCEN保留FLITFEN保留SRAMENDMA2ENDMA1EN10位:SDIOEN-SDIO时钟使能(手动)定义:0(时钟关闭),1(时钟开启)8位:FSMCEN-FSMC时钟使能(手动)定义:0(时钟关闭),2(时钟开启)6位:CRCEN-CRC时钟使能(手动)定义:0(时钟关闭),3(时钟开启)4位:FLITFEN-FLITF时钟使能(手动)定义:0(时钟关闭),4(时钟开启)2位:SRAMEN-SRAM时钟使能(手动)定义:0(时钟关闭),5(时钟开启)1位:DMA2EN-DMA2时钟使能(手动)定义:0(时钟关闭),6(时钟开启)0位:DMA1EN-DMA1时钟使能(手动)定义:0(时钟关闭),7(时钟开启)RCC_APB2ENR(APB2外设时钟使能寄存器)31302928272625242322212019181716160160保留1514131211109876543210ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENIOPGENIOPFENIOPEENIOPDENIOPCENIOPBENIOPAEN保留AFIOEN15位:ADC3EN:ADC3接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)14位:USART1EN:USART1接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)13位:TIM8EN:TIM8接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)12位:SPI1EN:SPI1接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)11位:TIM1EN:TIM1接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)10位:ADC2EN:ADC2接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)9位:ADC1EN:ADC1接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)8位:IOPGEN:IOPG接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)7位:IOPFEN:IOPF接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)6位:IOPEEN:IOPE接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)5位:IOPDEN:IOPD接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)4位:IOPCEN:IOPC接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)3位:IOPBEN:IOPB接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)2位:IOPAEN:IOPA接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)0位:AFIOEN:AFIO接口时钟使能(手动)定义:0(时钟关闭),1(时钟开启)RCC_APB1ENR(APB1外设时钟使能寄存器)31302928272625242322212019181716保留DACENPWRENBKPEN保留CANEN保留USBENI2C2ENI2C1ENUART5ENUART4ENUART3ENUART2EN保留1514131211109876543210SPI3ENSPI2EN保留WWDGEN保留TIM7ENTIM6ENTIM5ENTIM4ENTIM3ENTIM2EN29位:DACRST-DAC时钟使能(手动)定义:0(时钟关闭),1(时钟开启)28位:PWRRST电源时钟使能(手动)定义:0(时钟关闭),1(时钟开启)27位:BKPRST-备份时钟使能(手动)定义:0(时钟关闭),1(时钟开启)25位:CANRST-CAN时钟使能(手动)定义:0(时钟关闭),1(时钟开启)23位:USBRST-USB时钟使能(手动)定义:0(时钟关闭),1(时钟开启)22位:I2C2RST-I2C2时钟使能(手动)定义:0(时钟关闭),1(时钟开启)21位:I2C1RST-I2C1时钟使能(手动)定义:0(时钟关闭),1(时钟开启)20位:UART5RST-UART5时钟使能(手动)定义:0(时钟关闭),1(时钟开启)19位:UART4RST-UART4时钟使能(手动)定义:0(时钟关闭),1(时钟开启)18位:UART3RST-UART3时钟使能(手动)定义:0(时钟关闭),1(时钟开启)17位:UART2RST-UART2时钟使能(手动)定义:0(时钟关闭),1(时钟开启)15位:SPI3RST-SPI3时钟使能(手动)定义:0(时钟关闭),1(时钟开启)14位:SPI2RST-SPI2时钟使能(手动)定义:0(时钟关闭),1(时钟开启)11位:WWDGRST-WWDG时钟使能(手动)定义:0(时钟关闭),1(时钟开启)5位:TIM7RST-TIM7时钟使能(手动)定义:0(时钟关闭),1(时钟开启)4位:TIM6RST-TIM6时钟使能(手动)定义:0(时钟关闭),1(时钟开启)3位:TIM5RST-TIM5时钟使能(手动)定义:0(时钟关闭),1(时钟开启)2位:TIM4RST-TIM4时钟使能(手动)定义:0(时钟关闭),1(时钟开启)1位:TIM3RST-TIM3时钟使能(手动)定义:0(时钟关闭),1(时钟开启)0位:TIM2RST-TIM2时钟使能(手动)定义:0(时钟关闭),1(时钟开启)RCC_BDCR(备份时钟控制寄存器)313029282726252423222120191817保留BDRST151413121110987654321RTCEN保留RTCSEL[1:0]保留LSEBYPLSERDYLSEON16位:BDRST备份域软件复位(手动)定义:0(复位未激活),1(复位整个备份域)15位:RTCEN-RTC时钟使能(手动)定义:0(RTC时钟关闭),1(RTC时钟开启)9-8位:RTCSEL[1:0]RTC时钟源选择(手动)一旦选定,则直到下次后被域被复位前不能改变,可通过设置BDRST来清除 定义:00(无时钟),01(LSE为时钟),10(LSI为时钟),11(HSE振荡器在128分频后做时钟)2位:LSEBYP低速时钟振荡器旁路(手动)只有在外部振荡器关闭时,才能写入该位低速振荡器周期才被清零。定义:0(无旁路),1(有旁路)1位:LSERDY外部低速LSE就绪(自动)在LSEON被清零后,该位需要6个低速周期才被清零。定义:0(外部振荡器未就绪),1(外部振荡器就绪)0位:LSEON外部低速振荡器使能(软件)定义:0(外部振荡器关闭),1(外部振荡器开启)RCC_CSR(RCC时钟控制/状态寄存器)313029282726252423222120191817LPWRRSTFWWDGRSTFIWDGRSTFSFTRSTFPORRSTFPINRSTF保留RMVF保留151413121110987654321保留LSIRDYLSION31位:LWRRSTF低功耗复位标志(自动),由软件通过写RMVF位清除,定义:0(无低功耗管理复位发生),1(发生低功耗管理复位)30位:WWDGRSTF窗口看门狗复位标志(自动),由软件通过写RMVF位清除,定义:0(无复位发生),1(有复位发生)29位:IWDGRSTF窗口看门狗复位标志(自动),由软件通过写RMVF位清除,定义:0(无复位发生),1(有复位发生)28位:SFTRSTF软件复位标志(自动)由软件通过写RMVF位清除,定义:0(无复位发生),1(有复位发生)27位:PORRSTF上电掉电复位标志(自动),由软件通过写RMVF位清除,定义:0(无复位发生),1(有复位发生)26位:PINRSTF-NRST引脚复位标志(自动),由软件通过写RMVF位清除,定义:0(无复位发生),1(有复位发生)24位:RMVF清除复位标志(手动),定义:0(无作用),1(清除复位标志)1位:LSIRDY内部低速振荡器就绪(自动),在LSION清零后,3个内部40K振荡周期后LSIRDY被清零,定义:0(内部未就绪),1(内部RC振荡器开启)1601600位:LSION内部低速振荡器使能(软件),定义:0(内部振荡器关闭),1(内部振荡器开启)GPIO输入输出相关寄存器GPIOx_CRL(端口配置低寄存器x=A…E)31302928272625242322212019181716CNF7[1:0]MODE7[1:0]CNF6[1:0]MODE6[1:0]CNF5[1:0]MODE5[1:0]CNF4[1:0]MODE4[1:0]1514131211109876543210CNF3[1:0]MODE3[1:0]CNF2[1:0]MODE2[1:0]CNF1[1:0]MODE1[1:0]CNF0[1:0]MODE0[1:0]31-0单位:CNF端口x配置位(软件控制0-7管脚)定义:在输入模式[1:0]=00下:00(模拟输入),01(浮空输入(复位后状态),10(上/下拉输入),11(保留) 在输出模式(MODE[1:0]>00)下:00(通用推挽),01(通用开漏),10(复用推挽),11(复用开漏)31-0双位:MODE端口x的模式位(软件控制0-7管脚)定义:00(输入模式(复位后模式),01(最大10M输入),10(最大2M输出),11(最大50M输出)GPIOx_CRH(端口配置高寄存器x=A…E)31302928272625242322212019181716CNF15[1:0]MODE15[1:0]CNF14[1:0]MODE14[1:0]CNF13[1:0]MODE13[1:0]CNF12[1:0]MODE12[1:0]1514131211109876543210CNF11[1:0]MODE11[1:0]CNF10[1:0]MODE10[1:0]CNF9[1:0]MODE9[1:0]CNF8[1:0]MODE8[1:0]31-0单位:CNF端口x配置位(软件控制8-15管脚)定义:在输入模式[1:0]=00下:00(模拟输入),01(浮空输入(复位后状态),10(上/下拉输入),11(保留) 在输出模式(MODE[1:0]>00)下:00(通用推挽),01(通用开漏),10(复用推挽),11(复用开漏)31-0双位:MODE端口x的模式位(软件控制8-15管脚)定义:00(输入模式(复位后模式),01(最大10M输入),10(最大2M输出),11(最大50M输出)GPIOx_IDR(端口输入数据寄存器x=A…E)31302928272625242322212019181716保留1514131211109876543210IDR15IDR14IDR13IDR12IDR11IDR10IDR9IDR8IDR7IDR6IDR5IDR4IDR3IDR2IDR1IDR015-0位:IDRy端口输入数据(y=15-0)这些位为只读并只能以16位的形式读出。读出的值为对应IO的状态。GPIOx_ODR(端口输出数据寄存器x=A…E)31302928272625242322212019181716保留1514131211109876543210ODR15ODR14ODR13ODR12ODR11ODR10ODR9ODR8ODR7ODR6ODR5ODR4ODR3ODR2ODR1ODR015-0位:ODRy端口输出数据(y=15-0)这些位可读可写并只能以字的形式操作。注:对GPIOx_BSRR,可以分别的对各个ODR位进行独立的设置/清除。GPIOx_BSRR(端口位设置/清除寄存器x=A…e)31302928272625242322212019181716BR15BR14BR13BR12BR11BR10BR9BR8BR7BR6BR5BR4BR3BR2BR1BR01514131211109876543210BS15BS14BS13BS12BS11BS10BS9BS8BS7BS6BS5BS4BS3BS2BS1BS031-16位:BRy清除端口x的位,这些位只能写入并只能以字的形式操作,定义:0(对应的ODRy位不产生影响),1(清除对应ODRy位为0)15-0位:Bsy设置端口x的位,这些位只能写入并只能以字的形式操作,定义:0(对应的ODRy位不产生影响),1(设置对应ODRy位为1)注:如果同时设置了Bsy和Bry的对应位,Bsy位起作用。GPIOx_BRR(端口位清除寄存器x=A…E)31302928272625242322212019181716保留151413121110987654321BR15BR14BR13BR12BR11BR10BR9BR8BR7BR6BR5BR4BR3BR2BR1BR015-0位:Bry清除端口x的位(y=15-0)这些位只能写入并只能以字的形式操作,定义:0(对对应位无影响),1(清除对应位的ODR位为0)GPIOx_LCKR(端口配置锁定寄存器x=A…E)313029282726252423222120191817保留LCKK151413121110987654321LCK15LCK14LCK13LCK12LCK11LCK10LCK9LCK8LCK7LCK6LCK5LCK4LCK3LCK2LCK1LCK016位:LCKK锁键,该位可随时读出,它只可通过锁键写入序列修改,定义:0(端口配置锁键位激活),1(端口配置锁位被激活,下次复位前GPIOx_LCKR被锁住) 锁键写序列:写1-》写0-》写1-》读0-》读1 最后一个读可省略,但可以用来确认锁键已被激活 注:在操作锁键的写入序列时,不能改变LCK[15-0]的值,且操作写入序列中的任何错误将不能激活锁键15-0位:LCKy端口x的锁位y(y=0-15)这些位可读可写但只能在LCKK位为0时写入,定义:0(不锁定端口的配置),1(锁定端口的配置)AFIO_EVCR(事件控制寄存器)313029282726252423222120191817保留151413121110987654321保留EVOEPORT[2:0]PIN[3:0]7位:EVOE允许事件输出(手动)当设置该位后,Cortex的EVENOUT将连接到由PORT[2:0]和PIN[3:0]选定的IO口6-4位:PORT[2:0]端口选择,选择用于输出Cortex的EVENTOUT信号的端口。定义:000(PA),001(PB),010(PC),011(PD),100(PE)3-0位:PIN[3:0]引脚选择,选择用于输出Cortex的EVENTOUT信号引脚, 定义:0000(选择Px0),0001(选择Px1),0010(选择Px2),0011(选择Px3),0100(选择Px4),0101(选择Px5),0110(选择Px6),0111(选择Px7) 1000(选择Px8),1001(选择Px9),1010(选择Px10),1011(选择Px11),1100(选择Px12),1101(选择Px13),1110(选择Px14),1111(选择Px15)0160160AFIO_MAPR(复用重映射和调试IO配置寄存器)31302928272625242322212019181716保留SWJ_CFG[2:0]保留ADC2REGADC2INJADC1REGADC1INJTIM5CH41514131211109876543210PD01CAN_REMAP[1:0]TIM4TIM3_REMAPTIM2_REMAPTIM1_REMAPUSART3_REMAPUSART3USART1I2CSPI126-24位:SWJ_CFG[2:0]串行线JTAG配置,这些位只可由软件写,读这些位将返回未定义的数值。用于配置SWJ和跟踪复用功能IO口。SWJ(串行JTAG) 支持JTAG或SWD访问Cortex的调试端口。系统复位后的默认状态时启用SWJ但没有跟踪功能,这种状态下可以通过JTMS/JTCK脚上的特定信号选择JTAG或SW模式 定义:000(完全SWJ,复位状态),001(完全SWJ,但没有NJTRST),010(关闭JATG启动SW),100(关闭JATG,关闭SW)20位:ADC2_ETRGREG_REMAP-adc2规则转换外部触发重映射(手动)它控制与ADC2注入转换外部触发相连的触发输入。当该位置0时, ADC2规则转换外部触发与EXTI11相连;当该位置1时,ADC2规则转换外部触发与TIM8_TRGO相连19位:ADC2_ETRGINJ_REMAP-ADC2注入转换外部触发重映射(手动),它控制与ADC2注入转换外部触发相连的触发输入。当该位置0时 ADC2注入转换外部触发与EXTI15相连;当该位置1时,ADC2注入转换外部触发与TIM8通道4相连。18位:ADC1_ETRGREG_REMAP-adc1规则转换外部触发重映射(手动)它控制与ADC1注入转换外部触发相连的触发输入。当该位置0时, ADC1规则转换外部触发与EXTI11相连;当该位置1时,ADC1规则转换外部触发与TIM8_TRGO相连17位:ADC1_ETRGINJ_REMAP-ADC1注入转换外部触发重映射(手动),它控制与ADC1注入转换外部触发相连的触发输入。当该位置0时 ADC1注入转换外部触发与EXTI15相连;当该位置1时,ADC1注入转换外部触发与TIM8通道4相连。16位:TIM5CH4_IREMAP-TIM5通道4内部重映射(手动)它控制TIM5通道4内部映像。定义:0(TIM5_CH4与PA3相连),1(LSI内部振荡器与TIM5_CH4相连,对LSI校准)15位:PD01_REMAP端口D0/端口D1映像到OSC_IN/OSC_OUT(手动)当不使用HSE时PD0和PD1可映像到这两个管脚,定义:0(不映像),1(PD0-IN,PD1-OUT)14-13位:CAN_REMAP[1:0]CAN复用功能重影像(手动)在只有单个CAN接口的产品上控制复用功能的重映像12位:TIM4_REMAP定时器4的重映像(手动)控制将TIM4的通道1-4映射到GPIO上11-10位:TIM3_REMAP[1:0]定时器3重映像(手动),控制定时器3的1-4通道在GPIO端口的映像9-8位:TIM2_REMAP[1:0]定时器2重映像(手动)控制定时器2的1-4通道和外部触发ETR在GPIO端口的映像7-6位:TIM1_REMAP[1:0]定时器1的重映像(手动)控制定时器1的通道1-4、1N-3N、外部触发和刹车输入在GPIO的映像5-4位:USART3_REMAP[1:0]USART3的重映像(手动)控制USART3的CTS、RTS、CK、TX、RX复用功能在GPIO端口的映像3位:USART2_REMAP[1:0]USART3的重映像(手动)控制USART2的CTS、RTS、CK、TX、RX复用功能在GPIO端口的映像2位:USART1_REMAP-USART1的重映像(手动)控制USART1的TX、RX复用功能在GPIO端口的映像1位:I2C1_REMAP-I2C1的重映像控制I2C1的SCL和SDA复用功能在GPIO端口的映像0位:SPI1_REMAP-SPI1的重映像控制SPI1的NSS、SCK、MISO、MOSI复用功能在GPIO端口的映像中断和事件相关寄存器AFIO_EXTICR1(外部中断配置寄存器1)31302928272625242322212019181716保留1514131211109876543210EXTI3[3:0]EXTI2[3:0]EXTI1[3:0]EXTI0[3:0]15-0位:EXTI[3:0]EXTIx(x=0-3)配置(手动)用于选择EXTIx外部中断输入源 定义:0000(PA[x]引脚),0001(PB[x]引脚),0010(PC[x]引脚),0011(PD[x]引脚),0100(PE[x]引脚),0101(PF[x]引脚),0110(PG[x]引脚)AFIO_EXTICR2(外部中断配置寄存器2)31302928272625242322212019181716保留1514131211109876543210EXTI7[3:0]EXTI6[3:0]EXTI5[3:0]EXTI4[3:0]15-0位:EXTI[3:0]EXTIx(x=4-7)配置(手动)用于选择EXTIx外部中断输入源 定义:0000(PA[x]引脚),0001(PB[x]引脚),0010(PC[x]引脚),0011(PD[x]引脚),0100(PE[x]引脚),0101(PF[x]引脚),0110(PG[x]引脚)AFIO_EXTICR3(外部中断配置寄存器3)31302928272625242322212019181716保留1514131211109876543210EXTI11[3:0]EXTI10[3:0]EXTI9[3:0]EXTI8[3:0]15-0位:EXTI[3:0]EXTIx(x=8-11)配置(手动)用于选择EXTIx外部中断输入源 定义:0000(PA[x]引脚),0001(PB[x]引脚),0010(PC[x]引脚),0011(PD[x]引脚),0100(PE[x]引脚),0101(PF[x]引脚),0110(PG[x]引脚)AFIO_EXTICR4(外部中断配置寄存器4)31302928272625242322212019181716保留1514131211109876543210EXTI15[3:0]EXTI14[3:0]EXTI13[3:0]EXTI12[3:0]15-0位:EXTI[3:0]EXTIx(x=12-15)配置(手动)用于选择EXTIx外部中断输入源 定义:0000(PA[x]引脚),0001(PB[x]引脚),0010(PC[x]引脚),0011(PD[x]引脚),0100(PE[x]引脚),0101(PF[x]引脚),0110(PG[x]引脚)262221201918保留MR19MR18MR1715141312111098765432MR15MR14MR13MR12MR11MR10MR9MR8MR7MR6MR5MR4MR3MR2MR119-0位:MRx线x上的事件屏蔽,定义:0(屏蔽来自线x上的事件请求),1(开放来自线x上的时间请求)注:19只用于互联型,对其他芯片保留EXTI_EMR(中断屏蔽寄存器)31302928272625242322212019183130292827EXTI_IMR(中断屏蔽寄存器)25242317MR161MR01601716保留MR19MR18MR17MR16151413121110987654321MR15MR14MR13MR12MR11MR10MR9MR8MR7MR6MR5MR4MR3MR2MR1MR019-0位:MRx线x上的事件屏蔽,定义:0(屏蔽来自线x上的事件请求),1(开放来自线x上的时间请求)注:19只用于互联型,对其他芯片保留EXTI_RTSR(上升沿触发选择寄存器)313029282726252423222120191817保留TR19TR18TR17TR16151413121110987654321TR15TR14TR13TR12TR11TR10TR9TR8TR7TR6TR5TR4TR3TR2TR1TR00-19位:TRx线x的上升沿触发时间配置位,定义:0(禁止输入线x上的上升沿触发(中断和事件),1(允许输入线x上的上升沿触发(中断和时间)注19位用于互联型EXTI_FTSR(下降沿触发选择寄存器)313029282726252423222120191817保留TR19TR18TR17TR16151413121110987654321TR15TR14TR13TR12TR11TR10TR9TR8TR7TR6TR5TR4TR3TR2TR1TR00-19位:TRx线x的上升沿触发时间配置位,定义:0(禁止输入线x上的上升沿触发(中断和事件),1(允许输入线x上的上升沿触发(中断和时间)注19位用于互联型EXTI_SWIER313029282726252423222120191817保留SWIER19SWIER18SWIER17SWIER16151413121110987654321SWIER15SWIER14SWIER13SWIER12SWIER11SWIER10SWIER9SWIER8SWIER7SWIER6SWIER5SWIER4SWIER3SWIER2SWIER1SWIER019-0位:SWIERx线x上的软件中断,当该位为0时,写1将设置EXTI_PR中相应的挂起位。如果在EXTI_IMR和EXTI_EMR中允许产生中断,则此时将产生一个中断。 注:通过清除EXTI_PR的对应位(写1),可清除该位为0,19位为互联型,对其他芯片为保留EXTI_PR(挂起寄存器)313029282726252423222120191817保留PR19PR18PR17PR16151413121110987654321PR15PR14PR13PR12PR11PR10PR9PR8PR7PR6PR5PR4PR3PR2PR1PR019-0位:PRx挂起位,定义:0(没有发生触发请求),1(发生了选择的触发请求) 注:19位用于互联型,对其他产品为保留位0160160160160 当在外部中断线上发生了选择的边沿事件,该位被置1。在该位中写入1可以清除它,也可以通过改变边沿检测的极性清除。DMA相关寄存器DMA_ISR(DMA中断状态寄存器313029282726252423222120191817保留TEIF7HTIF7TCIF7GIF7TEIF6HTIF6TCIF6GIF6TEIF5HTIF5TCIF5GIF5151413121110987654321TEIF4HTIF4TCIF4GIF4TEIF3HTIF3TCIF3GIF3TEIF2HTIF2TCIF2GIF2TEIF1HTIF1TCIF1GIF127,23,19,15,11,7,3位:TEIFx通道x的传输错误标志(x=1…7)(硬件控制)在DMA_IFCR寄存器的相应位写1可清除这些标志位,定义:0(无错),1(有错)26,22,18,14,10,6,2位:HTIFx通道x的办传输标志(x=1…7)(硬件控制)在DMA_IFCR寄存器的相应位写1可清除这写位,定义:0(无半传输事件),1(有)25,21,17,13,9,5,1位:TCIFx通道x的传输完成标志(x=1…7)(硬件控制)在DMA_IFCR寄存器的相应位写入1可清除这些位,定义:(传输没完成),1(传输完成)24,20,16,12,8,4,0位:GIFx通道x的全局中断标志(x=1…7)(硬件控制)在DMA_IFCR寄存器的相应位写入1可清除这些位,定义:0(没有TE/HT/TC事件),1(有)DMA_IFCR(DMA中断标志清除寄存器)313029282726252423222120191817保留CTEIF7CHTIF7CTCIF7CGIF7CTEIF6CHTIF6CTCIF6CGIF6CTEIF5CHTIF5CTCIF5CGIF5151413121110987654321CTEIF4CHTIF4CTCIF4CGIF4CTEIF3CHTIF3CTCIF3CGIF3CTEIF2CHTIF2CTCIF2CGIF2CTEIF1CHTIF1CTCIF1CGIF127,23,19,15,11,7,3位:CTEIFx清除通道x的传输错误标志(x=1…7)(手动)定义:0(无效),1(清除DMA_ISR寄存器中的对应TEIF标志)26,22,18,14,10,6,2位:CHTIFx清除通道x的办传输标志(x=1…7)(手动)定义:0(无效),1(清除DMA_ISR寄存器中的对应HTIF标志)25,21,17,13,9,5,1位:CTCIFx清除通道x的传输完成标志(x=1…7)(手动)定义:0(无效),1(清除DMA_ISR寄存器中的对应HTIF标志)24,20,16,12,8,4,0位:CGIFx清除通道x的全局中断标志(x=1…7)(手动)定义:0(无效),1(清除DMA_ISR寄存器中的对应HTIF标志)DMA_CCRx(DMA通道x配置寄存器x=1…7)313029282726252423222120191817保留151413121110987654321保留MEM2MEMPL[1:0]MSIZE[1:0]PSIZE[1:0]MINCPINCCIRCDIRTEIEHTIETCIEEN14位:MEM2MEM存储器到存储器模式(手动),定义:0(非存储器到存储器模式),1(启动存储器到存储器模式)13和12位:PL[1:0]通道优先级(手动),定义:00(低),01(中),10(高),11(最高)11和10位:MSIZE[1:0]存储器数据宽度(手动)定义:00(8位),01(16位),10(32位),11(保留)9和8位PSIZE[1:0]外设数据宽度(手动)定义:00(8位),01(16位),10(32位),11(保留)7位:MINC存储器地址增量模式(手动)定义:0(不执行存储器地址增量操作),1(执行存储器地址增量操作)6位:PINC外设地址增量模式(手动)定义:0(不执行存储器地址增量操作),1(执行存储器地址增量操作)5位:CIRC循环模式(手动)定义:0(不执行循环操作),1(执行循环操作)4位:DIR数据传输方向(手动)定义:0(从外设读),1(从存储器读)3位:TEIE允许传输错误中断(手动)定义:0(禁止TE中断),1(允许TE中断)2位:HEIE允许半传输中断(手动)定义:0(禁止TE中断),1(允许TE中断)1位:TCIE允许传输完成中断(手动)定义:0(禁止TE中断),1(允许TE中断)0位:EN开启通道(手动)定义:0(不工作),1(开启)DMA_CNDTRx(DMA通道x传输数量寄存器x=1…7)313029282726252423222120191817保留16016016016876543210NDT15-0位:DNT[15:0]数据传输数量,数据传输数量为0到65535。这个寄存器只能在通道不工作(DMA_CCRx的EN=0)时写入,通道开启后该寄存器变为只读指令剩余的 待传输字节数目。寄存器内容在每次DMA传输后递减。数据传输结束后,寄存器的内容或者变为0,或者当该通道配置为自动重加载模式时,寄存器的内容将 被自动重新加载为之前配置时的数值。当寄存器的内容为0时,无论通道是否开启,都不会发生任何数据传输DMA_CPARx(DMA通道x外设地址寄存器x=1…7)31302928272625242322212019181716PA1514131211109876543210PA31-0位:PA[31:0]外设地址,外设数据寄存器的基地址,作为数据传输的源或目标,当开启通道(DMA_CCRx的EN=1)时不能写该寄存器, 当PSIZE=01(16位),不使用PA[0]位。操作自动的与半字节地址对齐,当PSIZE=10(32位)时,不使用PA[1:0]位。操作自动的与字地址对齐DMA_CMARx(DMA通道x存储器地址寄存器x=1…7)31302928272625242322212019181716MA1514131211109876543210MA31-0位:MA[31:0]外设地址,外设数据寄存器的基地址,作为数据传输的源或目标,当开启通道(DMA_CCRx的EN=1)时不能写该寄存器,1514131211109 当MSIZE=01(16位),不使用MA[0]位。操作自动的与半字节地址对齐,当MSIZE=10(32位)时,不使用MA[1:0]位。操作自动的与字地址对齐ADC相关寄存器311530142913281227112610ADC_SR(ADC状态寄存器)252423保留987226215204193182171160保留STRTJSTRTJEOCEOCAWD4位:STRT规则通道开始位(硬件在开始转换时置位,软件清0)定义:0(规则通道未开始转换),1(规则通道已开始转换)3位:JSTRT注入通道开始位(硬件在开始转换时置位,软件清0)定义:0(规则通道未开始转换),1(规则通道已开始转换)2位:JEOC注入通道转换结束位(硬件在所有注入通道转换结束时设置,由软件清0)定义:0(转换未完成),1(转换完成)1位:转换结束位(该位由硬件在(规则或注入)通道组转换结束时设置,由软件清除或由读取ADC_DR时清除,定义:0(转换未完成),1(转换完成)0位:AWD模拟看门狗标志,该位在硬件转换的电压值超出了ADC_LTR和ADC_HTR寄存器定义的范围时置位,由软件清0,定义:0(没事件),1(有事件)ADC_CR1(ADC控制寄存器1)31302928272625242322212019181716保留AWDENJAWDEN保留DUALMOD[3:0]1514131211109876543210DISCNUM[2:0]JDISCNDISCENJAUTOAWDSGLSCANJEOCIEAWDIEEOCIEAWDCH[4:0]23位:AWDEN在规则通道上开启模拟看门狗(手动)定义:0(在规则通道上禁用模拟开门狗),1(使用)22位:JAWDEN在注入通道上开启模拟看门狗(手动)定义:0(在规则通道上禁用模拟开门狗),1(使用)19-16位:DUALMOD[3:0]双模式选择(手动)定义:0000(独立模式),0001(混合同步规则+注入同步模式),0010(混合同步规则+交替触发模式) 0011(混合同步注入+快速交叉模式),0100(混合同步注入+慢速交叉模式),0101(注入同步模式),0110(规则同步模式),0111(快速交叉模式) 1000(慢速交叉模式),1001(交替触发模式)注:在ADC2和ADC3中这些位为保留,在双模式中,改变通道的配置会产生一个重新开始的条件,则将导致 同步丢失,建议在进行任何配置改变前关闭双模式15-13位:DISCNUM[2:0]间断模式通道计数,软件通过这些位定义在间断模式下收到外部触发后转换规则通道的数目,定义:000(1通道)001(2通道)111(8通道)12位:JDISCEN在注入通道上的间断模式,(手动)用于开启或关闭注入通道组上的间断模式,定义:0(注入通道注组上禁用间断模式),1(使用)11位:DISCEN在规则通道上的间断模式,(手动)用于开启或关闭规则通道组函的间断模式,定义:0(规则通道组注上禁用间断模式),1(使用)10位:JAUTO自动的注入通道组转换,(手动)用于开启或关闭规则通道组转换结束后自动的注入通道组转换,定义:0(关闭自动注入通道组的转换),1(开启)9位:AWDSGL扫描模式中在一个单一的通道上使用看门狗(手动)用于开启或关闭AWDCH[4:0]位指定的通道上的看门狗功能,定义:(在所有通道用),1(单一通道用)8位:SCAN扫描模式(手动)用于开启或关闭扫描模式,在扫描模式中,转换由ADC_SQRx或ADC_JSQRx寄存器选中的通道,定义:0(关闭),1(使用扫描模式)7位:JEOCIE允许产生注入通道转换结束中断(手动)用于禁止或允许所有注入通道转换结束后产生的中断,定义:0(禁止JEOC中断),1(当置位JEOC时产生中断)6位:AWDIE允许产生模拟看门狗中断(手动),在扫描模式下,如果看门狗检测到超范围数值时,只有在设置了该位时扫描才会终止。定义:0(禁止),1(允许)5位:EOCIE允许产生EOC中断(手动)用于禁止或允许转换后产生中断,定义:0(禁止EOC中断),1(允许,当硬件置位EOC时产生中断)4-0位:AWDCH[4:0]模拟看门狗通道选择位(手动)选择模拟看门狗保护的输入通道,00000(0通道)00001(1通道)01111(16)10000(16)10001(17)其他保留 注:ADC1的模拟输入通道16和17在芯片内部分别连到了温度传感器和Vrefint,ADC2的模拟输入通道16和17连到了VSS,ADC3模拟输入9/14/15/16/17与VSS相连ADC_CR2(ADC控制寄存器2)31302928272625242322212019181716保留TSVREFESWSTARTJSWSTARTEXTTRIGEXTSEL[2:0]保留1514131211109876543210JEXTTRIGJEXTSEL[2:0]ALIGN保留DMA保留RSTCALCALCONTADON23位:TSVREFE温度传感器和Vrefint使能(手动)在多余1个ADC的器件中该位仅出现在ADC1中,定义:0(禁止),1(开启)22位:SWSTART开始转换规则通道(软件启动该位,转换后硬件马上清除此位)如果在EXTSEL[2:0]位中选择了SWSTART为触发事件,该位用于启动一组规则通道的转换 定义:0(复位状态),1(开始转换规则通道)21位:JSWSTART开始转换注入通道,(软件启动该位,转换后硬件马上清除此位)如果在JEXTSEL[2:0]位中选择了JSWSTART位触发事件,启动一组注入通道的转换 定义:0(复位状态),1(开始转换注入通道)20位:EXTTRIG规则通道的外部触发转换模式(手动),定义:0(不用外部事件启动转换),1(使用外部事件启动转换)19-17位:EXTSEL[2:0]选择启动规则通道组转换的外部事件,这些位选择用于启动规则通道组转换的外部事件,ADC1和ADC2的触发配置如下 定义:000(T1的CC1事件)001(T1的CC2事件)010(T1的CC3事件)011(T2的CC2事件)100(T3的TRGO事件)101(T4的CC4事件)110EXTI线11/T8_TRGO事件 111(SWSTART) ADC3的触发配置如下:000(T3的CC1事件)001(T2的CC3事件)010(T1的CC3事件)011(T8的CC1事件)100(T8的TRGO事件)101(T5的CC1事件)110(T5的CC3事件) 111(SWSTART)15位:JEXTTRIG注入通道的外部触发转换模式(手动)定义:0(不用外部事件启动转换),1(使用外部事件启动转换)14-12位:JEXTSEL[2:0]选择启动注入通道转换的外部事件,这些位选择用于启动注入通道组转换的外部事件,定义:ADC1和ADC2的触发配置如下 定义:000(T1的TRGO事件)001(T1的CC4事件)010(T2的TRGO事件)011(T2的CC1事件)100(T3的CC4事件)101(T4的TRGO事件)110(EXTI线15/T8_CC4事件) 111(JSWSTART) ADC3触发配置,定义:000(T1的TRGO)001(T1的CC4)010(T4的CC3)011(T8的CC2)100(T8的CC4)101(T5的TRGO)110(T5的CC4)111(JSWSTART)11位:ALIGN数据对齐(手动)定义:0(右对齐),1(左对齐)8位:DMA字节存储器访问模式(手动)定义:0(不使用DMA模式),1(使用)3位:RSTCAL复位校准(手动,在校准寄存器被初始化后该位将被清除,定义:0(校准寄存器已初始化),1(初始化校准寄存器) 注:如果正在进行转换时设置RSTCAL,清除校准寄存器需要额外的周期2位:CAL-A/D校准(该位软件置1,在校准结束时由硬件清除),定义:0(校准完成),1(开始校准)1位:CONT连续转换(手动,如果设置此位则转换将连续进行直到该位被清除),定义:0(单词转换),1(连续转换)0位:ADON开关AD转换器(手动)当该位为0时,写入1将把ADC从断电模式下唤醒。当该位为1时,写入1将启动转换,应用程序需注意,在转换器上电转换开始有 一个延迟Tstab,定义:0(关闭ADC转换和校准,并进入断电模式),1(开启ADC并启动转换) 注:如果在这个寄存器与ADON一起还有其他位改变,则转换不被触发。则是为了防止触发错误的转换。ADC_SMPR1(ADC采样时间寄存器) 31302928272625242322212019181716保留SMP17[2:0]SMP16[2:0]SMP15[2:1]1514131211109876543210SMP15[0]SMP14[2:0]SMP13[2:0]SMP12[2:0]SMP11[2:0]SMP10[2:0]23-0位:SMPx[2:0]选择通道x的采样时间,定义:000(1.5周期)001(7.5)010(13.5)011(28.5)100(41.5)101(55.5)110(71.5)111(239.5)ADC_SMPR1(ADC采样时间寄存器) 31302928272625242322212019181716保留SMP9[2:0]SMP8[2:0]SMP7[2:0]SMP6[2:0]SMP5[2:1]1514131211109876543210SMP5[0]SMP4[2:0]SMP3[2:0]SMP2[2:0]SMP1[2:0]SMP0[2:0]29-0位:SMPx[2:0]选择通道x的采样时间,定义:000(1.5周期)001(7.5)010(13.5)011(28.5)100(41.5)101(55.5)110(71.5)111(239.5)ADC_JOFRx(ADC注入通道数据偏移寄存器x=1…4)31302928272625242322212019181716保留1514131211109876543210保留JOFFSETx11-0位:JOFFSETx[11:0]注入通道x的数据偏移,当转换注入通道时,这些位定义了用于从原始转换数据中减去的数值。转换的结果可以在ADC_JDRx寄存器中读出ADC_HTR(ADC看门狗高阀值寄存器)313029282726252423222120191817保留151413121110987654321保留HT[11:0]11-0位:HT[11:0]模拟看门狗高阀值,这些位定义了模拟看门狗的阀值高限。ADC_LRT(ADC看门狗低阀值寄存器)313029282726252423222120191817保留151413121110987654321保留11-0位:LT[11:0]模拟看门狗低阀值,这些位定义了模拟看门狗的阀值低限ADC_SQR1(ADC规则序列寄存器1)313029282726252423222120191817L[3:0]SQ16[4:1]151413121110987654321SQ16SQ15[2:0]SQ14[2:0]SQ13[2:0]23-20位:L[3:0]规则通道序列长度,这些位由软件定义在规则通道转换序列中的通道数目,定义:0000(1个转换)…1111(16个转换)19-15位:SQ16[4:0]规则序列中的第16个转换,这些位由软件定义转换序列中的第16个转换通道的编号(0~17)。14-10位:SQ15[4:0]规则序列中的第15个转换9-5位:SQ14[4:0]规则序列中的第14个转换4-0位:SQ13[4:0]规则序列中的第13个转换ADC_SQR2(ADC规则序列寄存器2)313029282726252423222120191817保留SQ12[4:0]SQ11[4:0]SQ10[4:0]151413121110987654321SQ10[0]SQ9[4:0]SQ8[4:0]SQ7[4:0]29-25位:SQ12[4:0]规则序列中的第12个转换,这些位由软件定义转换序列中的第12个转换通道的编号(0~17)。24-20位:SQ11[4:0]规则序列中的第11个转换, 19-15位:SQ10[4:0]规则序列中的第10个转换, 14-10位:SQ9[4:0]规则序列中的第9个转换 9-5位:SQ8[4:0]规则序列中的第8个转换,4-0位:SQ7[4:0]规则序列中的第7个转换,ADC_SQR3(ADC规则序列寄存器3)313029282726252423222120191817保留SQ6[4:0]SQ5[4:0]SQ4[4:0]151413121110987654321SQ4[0]SQ3[4:0]SQ2[4:0]SQ1[4:0]29-25位:SQ6[4:0]规则序列中的第6个转换,这些位由软件定义转换序列中的第12个转换通道的编号(0~17)。24-20位:SQ5[4:0]规则序列中的第5个转换, 16016016016016019-15位:SQ4[4:0]规则序列中的第4个转换, 14-10位:SQ3[4:0]规则序列中的第3个转换 9-5位:SQ2[4:0]规则序列中的第2个转换,4-0位:SQ1[4:0]规则序列中的第1个转换,181716JSQ4[4:1]1514131210987643210JSQ4[0]JSQ3[4:0]JSQ2[4:0]JSQ1[4:0]21-20位:JL[1:0]注入通道序列长度,这些位由软件定义在规则通道转换序列中的通道数目。定义:00(1个转换),01(2个转换),10(3个转换),11(4个转换)19-15位:JSQ4[4:0]注入序列中的第4个转换,这些位由软件定义转换序列中的第4个转换通道的编号(0~17)。 注:不同于规则转换序列,如果JL[1:0]的长度小于4,则转换的序列顺序是从(4-JL)开始。例如:ADC_JSQR[21:0] = 10 00011 00011 00111 00010 意味着扫描转换将按下列通道顺序转换:7、3、3,而不是2、7、3。14-10位:JSQ3[4:0]:注入序列中的第3个转换9-5位:JSQ3[4:0]:注入序列中的第2个转换4-0位:JSQ1[4:0]:注入序列中的第1个转换ADC_JDRx(ADC 注入数据寄存器x=1…4)31302928272625242322212019181716保留1514131211109876543210JDATA[15:0]15-0位:JDATA[15:0]注入转换的数据,这些位为只读,包含了注入通道的转换结果。数据是左对齐或右对齐ADC_DR(ADC规则数据寄存器)31302928272625242322212019181716ADC2DATA[15:0]1514131211109876543210DATA[15:0]31-16位:ADC2DATA[15:0]ADC2转换的数据,在ADC1中:双模式下,这些位包含了ADC2转换的规则通道数据,在ADC2和ADC3中:不使用这些位3130292827保留1126ADC_JSQRADC(注入序列寄存器)2524232221JL[3:0]5201915-0位:规则转换的数据,这些位为只读,包含了规则通道的转换结果。数据是左对齐或右对齐DAC相关寄存器DAC_CR(DAC控制寄存器)31302928272625242322212019181716保留DMAEN2MAMP2[3:0]WAVE2[2:0]TSEL2[2:0]TEN2BOFF2EN21514131211109876543210保留DMAEN2MAMP1[3:0]WAVE1[2:0]TSEL1[2:0]TEN1BOFF1EN128位:DMAEN2-DAC通道2 DMA使能,该位由软件设置和清除,定义:0(关闭DAC通道2DMA模式),1(使能)27-24位:MAMP2[3:0]DAC通道2屏蔽/幅值选择器(手动)用来在噪声生成模式下选择屏蔽位,在三角波生成模式下选择波形的幅值 定义:0000:不屏蔽LSFR位0 / 三角波幅值等于1;0001:不屏蔽LSFR位[1:0] / 三角波幅值等于3;0010:不屏蔽LSFR位[2:0] / 三角波幅值等于7; 0011: [3:0]/15;0100:[4:0] / 31;0101:[5:0] /63;0110:[6:0] / 127;0111:[7:0] / 255;1000:[8:0] / 三511;1001:[9:0] / 1023; 1010:[10:0] / 2047;≥1011: [11:0] / 409523-22位:WAVE2[1:0]DAC通道2噪声/三角波生成使能(手动)定义:00(关闭波形发生器)10(使能噪声波形发生器)1x(使能三角波发生器)21-19位:TSEK2[2:0]DAC通道2触发选择,该3位用于选择DAC通道2的外部触发事件,定义:000(TIM6 TRGO事件)001(F107时T3的TRGO事件,对于F103是T8的TRGO事件 010(TIM7 TRGO事件)011(TIM5 TRGO事件)100(TIM2 TRGO事件)101(TIM4 TRGO事件)110(外部中断线9)111(软件触发) 注意:该3位只能在TEN2 = 1(DAC通道2触发使能)时设置18位:TEN2DAC通道2触发使能(手动)使能/关闭DAC通道2的触发,定义:0(关闭触发,写入DAC_DHRx寄存器的数据在1个APB1时钟周期后传入DAC_DOR2寄存器) 1:使能DAC通道2触发,写入DAC_DHRx寄存器的数据在3个APB1时钟周期后传入DAC_DOR2寄存器。 注意:如果选择软件触发,写入寄存器DAC_DHRx的数据只需要1个APB1时钟周期就可以传入寄存器DAC_DOR2。17位:BOFF2关闭DAC通道2输出缓存,用来使能/关闭DAC通道2的输出缓存,定义:0(使能DAC通道2输出缓存)1(关闭DAC通道2输出缓存)16位:EN2DAC通道2使能,定义:0(关闭DAC通道2),1(使能DAC通道2)12位:DMAEN1-DAC通道1 DMA使能(手动),定义:0(关闭DAC通道1 DMA模式),1(使能DAC通道1 DMA模式)11-8位:MAMP1[3:0]DAC通道1屏蔽/幅值选择器(手动)用来在噪声生成模式下选择屏蔽位,在三角波生成模式下选择波形的幅值 定义:0000:不屏蔽LSFR位0 / 三角波幅值等于1;0001:不屏蔽LSFR位[1:0] / 三角波幅值等于3;0010:不屏蔽LSFR位[2:0] / 三角波幅值等于7; 0011: [3:0]/15;0100:[4:0] / 31;0101:[5:0] /63;0110:[6:0] / 127;0111:[7:0] / 255;1000:[8:0] / 三511;1001:[9:0] / 1023; 1010:[10:0] / 2047;≥1011: [11:0] / 40957-6位:WAVE1[1:0]DAC通道1噪声/三角波生成使能(手动)定义:00(关闭波形发生器)10(使能噪声波形发生器)1x(使能三角波发生器)5-3位:TSEK1[2:0]DAC通道1触发选择,该3位用于选择DAC通道1的外部触发事件,定义:000(TIM6 TRGO事件)001(F107时T3的TRGO事件,对于F103是T8的TRGO事件 010(TIM7 TRGO事件)011(TIM5 TRGO事件)100(TIM2 TRGO事件)101(TIM4 TRGO事件)110(外部中断线9)111(软件触发) 注意:该3位只能在TEN1 = 1(DAC通道1触发使能)时设置2位:TEN1DAC通道1触发使能(手动)使能/关闭DAC通道1的触发,定义:0(关闭触发,写入DAC_DHRx寄存器的数据在1个APB1时钟周期后传入DAC_DOR2寄存器) 1:使能DAC通道2触发,写入DAC_DHRx寄存器的数据在3个APB1时钟周期后传入DAC_DOR1寄存器。 注意:如果选择软件触发,写入寄存器DAC_DHRx的数据只需要1个APB1时钟周期就可以传入寄存器DAC_DOR1。1位:BOFF1关闭DAC通道1输出缓存,用来使能/关闭DAC通道1的输出缓存,定义:0(使能DAC通道1输出缓存)1(关闭DAC通道1输出缓存)0位:DAC通道1使能,(手动),0(关闭),1(使能)DAC_SWTRIGR(DAC软件触发寄存器)31302928272625242322212019181716保留1514131211109876543210保留SWTRIG2SWTRIG11位:SWTRIG2-DAC通道2软件触发,定义:0(关闭DAC通道2软件触发),1(使能DAC通道2软件触发) 注意:一旦寄存器DAC_DHR2的数据传入寄存器DAC_DOR2,(1个APB1时钟周期后)该位由硬件置’0’。0位:SWTRIG1-DAC通道1软件触发,定义:0(关闭DAC通道1软件触发),1(使能DAC通道1软件触发) 注意:一旦寄存器DAC_DHR1的数据传入寄存器DAC_DOR1,(1个APB1时钟周期后)该位由硬件置’0’。DAC_DHR12R1(DAC通道1的12位右对齐数据保持寄存器)3130292827262524232221保留15141312111098765保留DACC1DHR[11:0]11-0位:DACC1DHR[11:0]DAC通道1的12位右对齐数据,该位由软件写入,表示DAC通道1的12位数据DAC_DHR12L1(DAC通道1的12位左对齐数据保持寄存器)3130292827262524232221保留15141312111098765DACC1DHR[11:0]11-0位:DACC1DHL[11:0]DAC通道1的12位左对齐数据,该位由软件写入,表示DAC通道1的12位数据DAC_DHR8R1(DAC通道1的8位右对齐数据保持寄存器)3130292827262524232221151413204193182171160204193182保留17116020191821711601211109876543保留DACC1DHR[7:0]7-0位:DACC1DHR[7:0]DAC通道1的8位右对齐数据,该位由软件写入,表示DAC通道1的的8位数据DAC_DHR12R2(DAC通道2的12位右对齐数据保持寄存器)31302928272625242322212019保留1514131211109876543保留DACC2DHR[11:0]11-0位:DACC1DHR[11:0]DAC通道2的12位右对齐数据,该位由软件写入,表示DAC通道2的12位数据DAC_DHR12L2(DAC通道2的12位左对齐数据保持寄存器)31302928272625242322212019保留1514131211109876543DACC2DHR[11:0]11-0位:DACC1DHR[11:0]DAC通道2的12位右对齐数据,该位由软件写入,表示DAC通道2的12位数据DAC_DHR8R2(DAC通道2的8位右对齐数据保持寄存器)313029282726252423222120191211109876保留7-0位:DACC1DHR[7:0]DAC通道2的8位右对齐数据,该位由软件写入,表示DAC通道2的的8位数据DAC_DHR12RD(双DAC的12位右对齐数据保持寄存器)151413543DACC2DHR[7:0]182171160182保留17116018217116030292827262524232221保留DACC2DHR[11:0]15141312111098765保留DACC1DHR[11:0]27-16位:DACC2DHR[11:0]DAC通道2的12位右对齐数据,该位由软件写入,表示DAC通道2的12位数据11-0位:DACC1DHR[11:0]:DAC通道1的12位右对齐数据,该位由软件写入,表示DAC通道2的12位数据DAC_DHR12LD(双DAC的12位左对齐数据保持寄存器)3130292827262524232221DACC2DHR[11:0]15141312111098765DACC1DHR[11:0]31-20位:DACC2DHR[11:0]DAC通道2的12位右对齐数据,该位由软件写入,表示DAC通道2的12位数据15-4位:DACC1DHR[11:0]:DAC通道1的12位右对齐数据,该位由软件写入,表示DAC通道2的12位数据DAC_DHR8RD(双DAC的8位右对齐数据保持寄存器)3130292827262524232221保留15141312111098765DACC2DHR[7:0]15-8位:DACC2DHR[7:0]DAC通道2的8位右对齐数据,该位由软件写入,表示DAC通道2的的8位数据7-0位:DACC1DHR[7:0]DAC通道1的8位右对齐数据,该位由软件写入,表示DAC通道1的的8位数据DAC_DOR1(DAC通道1数据输出寄存器)3130292827262524232221保留15141312111098765保留DACC1DOR[11:0]11-0位:DACC1DOR[11:0]:DAC通道1 输出数据,该位由软件写入,表示DAC通道1的输出数据DAC_DOR2(DAC通道2数据输出寄存器)3130292827262524232221保留15141312111098765保留DACC2DOR[11:0]3120419318217116020419318保留2保留171160201918217116043DACC1DHR[7:0]20419318217116020419318217116011-0位:DACC2DOR[11:0]DAC通道2 输出数据,该位由软件写入,表示DAC通道2的输出数据高级定时器T1和T8相关寄存器TIMx_CR1(TIM1和TIM8控制寄存器1)1514131211109876543210保留CKD[1:0]ARPECMS[1:0]DIROPMURSUDISCEN9-8位:CKD[1:0]时钟分频因子,定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比例。 定义:00(tDTS = tCK_INT),01(tDTS = 2 x tCK_INT),10(tDTS = 4 x tCK_INT)11:保留7位:ARPE:自动重装载预装载允许位,定义:0(TIMx_ARR寄存器没有缓冲),1(TIMx_ARR寄存器被装入缓冲器)6-5位:CMS[1:0]选择中央对齐模式,定义:00:边沿对齐模式。计数器依据方向位(DIR)向上或向下计数。 01(中央对齐模式1。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向下计数时被设置) 10(中央对齐模式2。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向上计数时被设置) 11(中央对齐模式3,计数器交替地向上和向下计数,配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,在计数器向上和向下计数时均被设置 注:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。4位:DIR:方向,定义:0(计数器向上计数),1(计数器向下计数),注:当计数器配置为中央对齐模式或编码器模式时,该位为只读3位:OPM:单脉冲模式,定义:0(在发生更新事件时,计数器不停止),1(在发生下一次更新事件(清除CEN位)时,计数器停止)2位:URS:更新请求源,软件通过该位选择UEV事件的源,0(如果使能更新中断或DMA请求,则计数器溢出/下溢-设置UG位-从模式控制器产生的更新会产生) 1:如果使能了更新中断或DMA请求,则只有计数器溢出/下溢才产生更新中断或DMA请求1位:UDIS禁止更新,软件通过该位允许/禁止UEV事件的产生,0:允许UEV。更新(UEV)事件由计数器溢出/下溢,设置UG位,从模式控制器产生的更新,事件产生 具有缓存的寄存器被装入它们的预装载值 1:禁止UEV。不产生更新事件,影子寄存器(ARR、PSC、CCRx)保持它们的值。如果设置了UG位或从模式控制器发出了一个硬件复位, 则计数器和预分频器被重新初始化。0位:CEN使能计数器,定义:0(禁止计数器),1(使能计数器)注:在软件设置了CEN位后,外部时钟、门控模式和编码器模式才能工作。 触发模式可以自动地通过硬件设置CEN位。在单脉冲模式下,当发生更新事件时,CEN被自动清除。TIMx_CR2(TIM1和TIM8控制寄存器2)1514131211109876543210保留OIS4OIS3NOIS3OIS2NOIS2OIS1NOIS1TI1SMMS[2:0]CCDSCCUS保留CCPC13,11,9位:OIS(1-4)N输出空闲状态(OC1N),定义:0(当MOE=0时,如果实现了OC1N,则死区后OC1=0),1(:当MOE=0时,如果实现了OC1N,则死区后OC1=1) 注:已经设置了LOCK(TIMx_BKR寄存器)级别1、2或3后,该位不能被修改14,12,10,8位:OIS1输出空闲状态1(OC1输出),定义:0(当MOE=0时,如果实现了OC1N,则死区后OC1=0),1(当MOE=0时,如果实现了OC1N,则死区后OC1=1) 注:已经设置了LOCK(TIMx_BKR寄存器)级别1、2或3后,该位不能被修改7位:TI1S-TI1选择,定义:0(TIMx_CH1引脚连到TI1输入),1(TIMx_CH1、TIMx_CH2和TIMx_CH3引脚经异或后连到TI1输入)6-4位:MMS主模式选择,这3位用于选择在主模式下送到从定时器的同步信息(TRGO)定义: 000:复位 – TIMx_EGR寄存器的UG位被用于作为触发输出(TRGO)。如果是触发输入产生的复位(从模式控制器处于复位模式), 则TRGO上的信号相对实际的复位会有一个延迟 001:使能 – 计数器使能信号CNT_EN被用于作为触发输出(TRGO)。有时需要在同一时间启动多个定时器或控制在一段时间内使能从定时器。 计数器使能信号是通过CEN控制位和门控模式下的触发输入信号的逻辑或产生。 当计数器使能信号受控于触发输入时,TRGO上会有一个延迟,除非选择了主/从模式(见TIMx_SMCR寄存器中MSM位的描述)。 010:更新 – 更新事件被选为触发输入(TRGO)。例如,一个主定时器的时钟可以被用作一个从定时器的预分频器 011:比较脉冲 – 在发生一次捕获或一次比较成功时,当要设置CC1IF标志时(即使它已经为高),触发输出送出一个正脉冲(TRGO) 100:比较 – OC1REF信号被用于作为触发输出(TRGO) 101:比较 – OC2REF信号被用于作为触发输出(TRGO) 110:比较 – OC3REF信号被用于作为触发输出(TRGO) 111:比较 – OC4REF信号被用于作为触发输出(TRGO)3位:CCDS:捕获/比较的DMA选择,定义:0(当发生CCx事件时,送出CCx的DMA请求),1(当发生更新事件时,送出CCx的DMA请求)2位:CCUS:捕获/比较控制更新选择,定义:0(如果捕获/比较控制位是预装载的(CCPC=1),只能通过设置COM位更新它们) 1(如果捕获/比较控制位是预装载的(CCPC=1),可以通过设置COM位或TRGI上的一个上升沿更新它们),注:该位只对具有互补输出的通道起作用0位:CCPC捕获/比较预装载控制位,定义:0(CCxE,CCxNE和OCxM位不是预装载的),1(CCxE,CCxNE和OCxM位是预装载的;设置该位后,它们只在设置了COM位后被更新)TIMx_SMCR(TIM1和TIM8从模式控制寄存器)151413121110987654321ETPECEETPS[1:0]ETF[3:0]MSMTS[2:0]保留SMS[2:0]15位:ETP外部触发极性,定义:0(ETR不反相,高电平或上升沿有效),1(ETR被反相,低电平或下降沿有效)14位:ECE外部时钟使能位,定义:0(禁止外部时钟模式2),1(使能外部时钟模式2,计数器由ETRF信号上的任意有效边沿驱动) 注1:设置ECE位与选择外部时钟模式1并将TRGI连到ETRF(SMS=111和TS=111)具有相同功效 注2:下述从模式可以与外部时钟模式2同时使用:复位模式,门控模式和触发模式;但是,这时TRGI不能连到ETRF(TS位不能是’111’)。 注3:外部时钟模式1和外部时钟模式2同时被使能时,外部时钟的输入是ETRF13位:ETPS[1:0]:外部触发预分频,外部触发信号ETRP的频率必须最多是TIMxCLK频率的1/4。当输入较快的外部时钟时,可以使用预分频降低ETRP的频率 定义:00(关闭预分频),01(ETRP/2),10(ETRP/4),11(ETRP/8)11-8位:ETF外部触发滤波,这些位定义了对ETRP信号采样的频率和对ETRP数字滤波的带宽。实际上,数字滤波器是一个事件计数器,它记录到N个事件后 会产生一个输出的跳变,定义:0000(无滤波器,以fDTS采样)0001(采样频率fSAMPLING=fCK_INT,N=2)0010(采样频率fSAMPLING=fCK_INT,N=4) 0011(采样频率fSAMPLING=fCK_INT,N=8)0100(采样频率fSAMPLING=fDTS/2,N=6)0101(采样频率fSAMPLING=fDTS/2,N=8) 0110(采样频率fSAMPLING=fDTS/4,N=6)0111(采样频率fSAMPLING=fDTS/4,N=8)1000(采样频率fSAMPLING=fDTS/8,N=6) 1001(采样频率fSAMPLING=fDTS/8,N=8)1010(采样频率fSAMPLING=fDTS/16,N=5)1011:采样频率fSAMPLING=fDTS/16,N=6 1100(采样频率fSAMPLING=fDTS/16,N=8)1101(采样频率fSAMPLING=fDTS/32,N=5)1110(采样频率fSAMPLING=fDTS/32,N=6) 1111(采样频率fSAMPLING=fDTS/32,N=8)7位:MSM主/从模式,定义:0(无作用),1:触发输入(TRGI)上的事件被延迟了,以允许在当前定时器(通过TRGO)与它的从定时器间的完美同步。 这对要求把几个定时器同步到一个单一的外部事件时是非常有用的6-4位:TS[2:0]触发选择,这3位选择用于同步计数器的触发输入,定义:000(内部触发0(ITR0),001(内部触发1(ITR1),010(内部触发2(ITR2), 011(内部触发3(ITR3),100(TI1的边沿检测器(TI1F_ED),101(滤波后的定时器输入1(TI1FP1),110(滤波后的定时器输入2(TI2FP2),111(外部触发输入(ETRF)2-0位:SMS[2:0]从模式选择,当选择了外部信号,触发信号(TRGI)的有效边沿与选中的外部输入极性相关,定义 000:关闭从模式 – 如果CEN=1,则预分频器直接由内部时钟驱动。001:编码器模式1 – 根据TI1FP1的电平,计数器在TI2FP2的边沿向上/下计数。 010:编码器模式2 – 根据TI2FP2的电平,计数器在TI1FP1的边沿向上/下计数。 011:编码器模式3-根据另一个信号的输入电平,计数器在TI1FP1和TI2FP2的边沿向上/下计数。 100:复位模式 – 选中的触发输入(TRGI)的上升沿重新初始化计数器,并且产生一个更新寄存器的信号。 101:门控模式 – 当触发输入(TRGI)为高时,计数器的时钟开启。一旦触发输入变为低,则计数器停止(但不复位)。计数器的启动和停止都是受控的。 110:触发模式 – 计数器在触发输入TRGI的上升沿启动(但不复位),只有计数器的启动是受控的。 111:外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器。注:如果TI1F_EN被选为触发输入(TS=100)时,不要使用门控模式。这是因为,TI1F_ED在每次TI1F变化时输出一个脉冲,然而门控模式是要检查触发输入的电平。TIMx_DIER(TIM1和TIM8 DMA/中断使能寄存器)151413121110987654321保留TDECOMDECC4DECC3DECC2DECC1DEUDEBIETIECOMIECC4IECC3IECC2IECC1IEUIE14位:TDE:允许触发DMA请求,定义:0(禁止),1(允许)13位:COMDE:允许COM的DMA请求,定义:0(禁止),1(允许)12,11,10,9位:CC(4-1)DE,允许捕获/比较(4-1)的DMA请求,定义:0(禁止),1(允许)008位:UDE允许更新的DMA请求,定义:0(禁止),1(允许)7位:BIE允许刹车中断,定义:0(禁止),1(允许)6位:TIE:触发中断使能,定义:0(禁止),1(允许)5位:COMIE允许COM中断,定义:0(禁止),1(允许)4,3,2,1位:CC(4-1)IE允许捕获/比较(4-1)中断,定义:0(禁止),1(允许)0位:UIE允许更新中断,定义:0(禁止),1(允许)TIMx_SR(TIM1和TIM8状态寄存器)1514131211109876543210保留CC4OFCC3OFCC2OFCC1OF保留BIFTIFCOMIFCC4IFCC3IFCC2IFCC1IFUIF12,11,10,9位:CC(4-1)OF捕获/比较(4-1)重复捕获标记,仅当相应的通道被配置为输入捕获时,该标记可由硬件置1。写0可清除该位, 定义:0(无重复捕获),1(计数器的值被捕获到TIMx_CCR1寄存器时,CC1IF的状态已经为’1)7位:BIF刹车中断标记,一旦刹车输入有效,由硬件对该位置’1’如果刹车输入无效,则该位可由软件清’0’.定义:0(无刹车事件),1(刹车检测到有效电平6位:TIF:触发器中断标记,当发生触发事件(当从模式控制器处于除门控模式外的其它模式时,在TRGI输入端检测到有效边沿,或门控模式下的任一边沿) 时由硬件对该位置’1’。它由软件清’0’。定义:0(无触发事件),1(触发中断等待响应)5位:COMIFCOM中断标记,一旦产生COM事件(当捕获/比较控制位:CCxE、CCxNE、OCxM已被更新)该位由硬件置’1’。它由软件清’0’。定义:0(无事件),1(有)4,3,2,1位:CC(4-1)IF捕获/比较(4-1)中断标记,如果通道CC1配置为输出模式,当计数器值与比较值匹配时该位由硬件置1,但在中心对称模式下除外。 (参考TIMx_CR1寄存器的CMS位)。它由软件清’0’。定义:0(无匹配发生),1(TIMx_CNT的值与TIMx_CCR1的值匹配) 当TIMx_CCR1的内容大于TIMx_APR的内容时,在向上或向上/下计数模式时计数器溢出,或向下计数模式时的计数器下溢条件下,CC1IF位变高 如果通道CC1配置为输入模式,当捕获事件发生时该位由硬件置’1’,它由软件清’0’或通过读TIMx_CCR1清’0’。 定义:0(无输入捕获产生),1(计数器值已被捕获(拷贝)至TIMx_CCR1(在IC1上检测到与所选极性相同的边沿))0位:UIF:更新中断标记,当产生更新事件时该位由硬件置’1’。它由软件清’0’定义:0(无更新事件产生),1(更新中断等待响应。当寄存器被更新时该位由硬件置’ 若TIMx_CR1寄存器的UDIS=0,当重复计数器数值上溢或下溢时(重复计数器=0时产生更新事件)。 若TIMx_CR1寄存器的URS=0、UDIS=0,当设置TIMx_EGR寄存器的UG=1时产生更新事件,通过软件对计数器CNT重新初始化时 若TIMx_CR1寄存器的URS=0、UDIS=0,当计数器CNT被触发事件重新初始化时。(参考13.4.3: TIM1和TIM8从模式控制寄存器(TIMx_SMCR))TIMx_EGR(TIM1和TIM8事件产生寄存器)1514131211109876543210保留BGTGCOMGCC4GCC3GCC2GCC1GUG7位:BG产生刹车事件(软件置1,硬件清0),定义:0(无动作),1(产生一个刹车事件。此时MOE=0、BIF=1,若开启对应的中断和DMA,则产生相应的中断和DMA)6位:TG产生触发事件(软件置1,硬件清0),定义:0(无动作),1(TIMx_SR寄存器的TIF=1,若开启对应的中断和DMA,则产生相应的中断和DMA)5位:COMG捕获/比较事件,产生控制更新(软件置1,硬件清0),定义:0(无动作),1(当CCPC=1,允许更新CCxE、CCxNE、OCxM位)注:该位只对拥有互补输出的通道有效4,3,2,1位:CC(4-1)G:产生捕获/比较(4-1)事件(软件置1,硬件清0),定义:0(无动作),1(在通道CC1上产生一个捕获/比较事件) 若通道CC1配置为输出,设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA 若通道CC1配置为输入,当前的计数器值被捕获至TIMx_CCR1寄存器;设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。若CC1IF已经为1,则设置 则设置CC1OF=10位:UG产生更新事件(软件置1,硬件清0),定义:0(无动作),1(重新初始化计数器,并产生一个更新事件。注意预分频器的计数器也被清’0’ (但是预分频系数不变)。若在中心对称模式下或DIR=0(向上计数)则计数器被清’0’;若DIR=1(向下计数)则计数器取TIMx_ARR的值)TIMx_ARR(TIM1和TIM8自动重装载寄存器)1514131211109876543210ARR[15:0]15-0位:ARR[15:0]自动重装载的值,ARR包含了将要传送至实际的自动重装载寄存器的数值,当自动重装载的值为空时,计数器不工作TIMx_CCMR1(TIM1和TIM8捕获/比较模式寄存器1)15OC2CE13OC2M[2:0]IC2F[3:0]13OC4M[2:0]IC4F[3:0]14141215OC4CE5OC2PEOC2FEOC1CEOC1M[2:0]IC2PSC[1:0]CC2S[1:0]IC1F[3:0]TIMx_CCMR2(TIM1和TIM8捕获/比较模式寄存器2)12111098765OC4PEOC4FEOC3CEOC3M[2:0]IC4PSC[1:0]CC4S[1:0]IC3F[3:0]输出比较和输入捕获功能不同,在寄存器中的设置也不同。输出比较模式1110987643OC1PEOC1FEIC1PSC[1:0]21CC1S[1:0]043OC3PEOC3FEIC3PSC[1:0]21CC3S[1:0]015位:OC2CE:输出比较2清0使能14-12位:OC2M[2:0]:输出比较2模式11位:OC2PE:输出比较2预装载使能10位:OC2FE:输出比较2快速使能9-8位:CC2S[1:0]:捕获/比较2选择,该位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC2通道被配置为输出) 01(CC2通道被配置为输入,IC2映射在TI2上) 10(CC2通道被配置为输入,IC2映射在TI1上) 11(CC2通道被配置为输入,IC2映射在TRC上。此模式仅工作在内部触发器输入被选中时。 (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC2E=0)才是可写的。9-8位:CC4S[1:0]:捕获/比较4选择;该位定义通道的方向(输入/输出);及输入脚的选择,定义:00(CC4通道被配置为输出)01(CC4通道被配置为输入,IC4映射在TI4上) 10(CC4通道被配置为输入,IC4映射在TI3上) 11(CC4通道被配置为输入,IC4映射在TRC上。此模式仅工作在内部触发器输入被选中时。 (由TIMx_SMCR寄存器的TS位选择),注:CC4S仅在通道关闭时(TIMx_CCER寄存器的CC4E=0)才是可写的。7位:OC1CE:输出比较1清’0’使能,定义:0(OC1REF 不受ETRF输入的影响),1(一旦检测到ETRF输入高电平,清除OC1REF=0)6-4位:OC1M[2:0]输出比较1模式,该3位定义了输出参考信号OC1REF的动作,而OC1REF决定了OC1、OC1N的值。OC1REF是高电平有效,而OC1、OC1N 的有效电平取决于CC1P、CC1NP位,定义:000(冻结。输出比较寄存器TIMx_CCR1与计数器TIMx_CNT间的比较对OC1REF不起作用) 001(匹配时设置通道1为有效电平。当计数器TIMx_CNT的值与捕获/比较寄存器1 (TIMx_CCR1)相同时,强制OC1REF为高),010(强制OC1REF为低) 011(翻转。当TIMx_CCR1=TIMx_CNT时,翻转OC1REF的电平)100(强制为无效电平。强制OC1REF为低)101(强制OC1REF为高) 110:PWM模式1- 在向上计数时,一旦TIMx_CNT
TIMx_CCR1时通道1 为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。 111:PWM模式2- 在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1 为有效电平,否则为无效电平。 注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=00(该通道配置成输出)则该位不能被修改。 注2:在PWM模式1或PWM模式2中,只有当比较结果改变了或在输出比较模式中从冻结模式切换到PWM模式时,OC1REF电平才改变。3位:OC1PE输出比较1预装载使能,定义:0(禁止TIMx_CCR1寄存器的预装载功能,可随时写入TIMx_CCR1寄存器,并且新写入的数值立即起作用) 1(开启TIMx_CCR1寄存器的预装载功能,读写操作仅对预装载寄存器操作,TIMx_CCR1的预装载值在更新事件到来时被加载至当前寄存器中) 注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=00(该通道配置成输出)则该位不能被修改。 注2:仅在单脉冲模式下(TIMx_CR1寄存器的OPM=1),可以在未确认预装载寄存器情况下使用PWM模式,否则其动作不确定2位:OC1FE输出比较1 快速使能,该位用于加快CC输出对触发输入事件的响应,定义: 0(根据计数器与CCR1的值,CC1正常操作,即使触发器是打开的。当触发器的输入有一个有效沿时,激活CC1输出的最小延时为5个时钟周期) 1(输入到触发器的有效沿的作用就象发生了一次比较匹配。因此,OC被设置为比较电平而与比较结果无关。采样触发器的有效沿和CC1输出间的延时被缩短为 3个时钟周期)OCFE只在通道被配置成PWM1或PWM2模式时起作用。1-0位:CC1S[1:0]捕获/比较1 选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC1通道被配置为输出),01(CC1通道被配置为输入,IC1映射在TI1上) 10(CC1通道被配置为输入,IC1映射在TI2上),11(CC1通道被配置为输入,IC1映射在TRC上.此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择) 注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=0)才是可写的。1-0位:CC3S[1:0]捕获/比较3 选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC3通道被配置为输出),01(CC3通道被配置为输入,IC3映射在TI3上) 10(CC3通道被配置为输入,IC3映射在TI4上),11(CC3通道被配置为输入,IC3映射在TRC上.此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择) 注:CC3S仅在通道关闭时(TIMx_CCER寄存器的CC3E=0)才是可写的。输入捕获模式15-12位:输入捕获2滤波器11-10位:CC2S[1:0]输入/捕获2预分频器9-8位:CC2S[1:0]捕获/比较2选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC2通道被配置为输出)01(CC2通道被配置为输入, IC2映射在TI2上),10(CC2通道被配置为输入,IC2映射在TI1上),11(CC2通道被配置为输入,IC2映射在TRC上),此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC2E=0)才是可写的。9-8位:CC4S[1:0]捕获/比较4选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC4通道被配置为输出)01(CC4通道被配置为输入, IC4映射在TI4上),10(CC4通道被配置为输入,IC4映射在TI3上),11(CC4通道被配置为输入,IC4映射在TRC上),此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC4E=0)才是可写的。7-4位:IC1F[3:0]:输入捕获1滤波器,这几位定义了TI1输入的采样频率及数字滤波器长度,数字滤波器由一个事件计数器组成,记录到N个事件后会产生一个输出的跳变 定义:0000(无滤波器,以fDTS采样)0010(采样频率fSAMPLING=fCK_INT,N=4)0011(采样频率fSAMPLING=fCK_INT,N=8)0100(fSAMPLING=fDTS/2,N=6) 0101(fSAMPLING=fDTS/2,N=8),0110(fSAMPLING=fDTS/4,N=6),0111(fSAMPLING=fDTS/4,N=8),1000(fSAMPLING=fDTS/8,N=6) 1001(fSAMPLING=fDTS/8,N=8),1010(fSAMPLING=fDTS/16,N=5),1011(fSAMPLING=fDTS/16,N=6),1100(fSAMPLING=fDTS/16,N=8) 1101(fSAMPLING=fDTS/32,N=5),0110(fSAMPLING=fDTS/4,N=6),1110(fSAMPLING=fDTS/32,N=6),0111(fSAMPLING=fDTS/4,N=8) 1111(fSAMPLING=fDTS/32,N=8)3-2位:IC1PSC[1:0]输入/捕获1预分频器,这2位定义了CC1输入(IC1)的预分频系数,一旦CC1E=0(TIMx_CCER寄存器中),则预分频器复位。 00(无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获),01(每2个事件触发一次捕获),10(每4个事件触发一次捕获),11(每8个事件触发一次捕获)1-0位:CC1S[1:0]捕获/比较1选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC1通道被配置为输出),01(CC1通道被配置为输入,IC1映射在TI1上 10(CC1通道被配置为输入,IC1映射在TI2上),11:CC1通道被配置为输入,IC1映射在TRC上。此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择)。注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=0)才是可写的。1-0位:CC3S[1:0]捕获/比较3选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC3通道被配置为输出),01(CC3通道被配置为输入,IC3映射在TI3上 10(CC3通道被配置为输入,IC3映射在TI4上),11:CC3通道被配置为输入,IC3映射在TRC上。此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择)。注:CC3S仅在通道关闭时(TIMx_CCER寄存器的CC3E=0)才是可写的。TIMx_CCER(TIM1和TIM8捕获/比较使能寄存器)1514131211109876543210CC4PCC4ECC3NPCC3NECC3PCC3ECC2NPCC2NECC2PCC2ECC1NPCC1NECC1PCC1E11,7,3位:CC(3-1)NP:输入/捕获3互补输出极性,定义:0(OC1N高电平有效),1(OC1N低电平有效) 注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为3或2且CC1S=00(通道配置为输出)则该位不能被修改10,6,2位:CC3(3-1)NE:输入/捕获3互补输出使能,定义:0(关闭- OC1N禁止输出,因此OC1N的电平依赖于MOE、OSSI、OSSR、OIS1、OIS1N和CC1E位的值) 1(开启- OC1N信号输出到对应的输出引脚,其输出电平依赖于MOE、OSSI、OSSR、OIS1、OIS1N和CC1E位的值。13,9,5,1位:CC(4-1)P:输入/捕获3输出极性,定义:CC1通道配置为输出-0(OC1高电平有效),1(OC1低电平有效) CC1通道配置为输入:该位选择是IC1还是IC1的反相信号作为触发或捕获信号,0:不反相:捕获发生在IC1的上升沿;当用作外部触发器时,IC1不反相。 1(相反,捕获发生在IC1的下降沿)注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为3或2,则该位不能被修改128,4,0位:CC(4-1)E:输入/捕获3输出使能,定义:CC1通道配置为输出- 0(关闭- OC1禁止输出,因此OC1的输出电平依赖于MOE、OSSI、OSSR、OIS1、OIS1N和CC1NE位的值),1(开启) CC1通道配置为输入,该位决定了计数器的值是否能捕获入TIMx_CCR1寄存器。0(捕获禁止),1(捕获使能)表75 带刹车功能的互补输出通道OCx和OCxN的控制位(P245)TIMx_CNT(TIM1和TIM8计数器)15141312111098CNT[15:0]765432100-15位:CNT[15:0]计数器的值TIMx_PSC(TIM1和TIM8预分频器)1514131211109876543210PSC[15:0]0-15位:PSC[15:0]预分频器的值,计数器的时钟频率(CK_CNT)等于fCK_PSC/( PSC[15:0]+1)。 PSC包含了每次当更新事件产生时,装入当前预分频器寄存器的值;更新事件包括计数器被TIM_EGR的UG位清’0’或被工作在复位模式的从控制器清’0’TIMx_RCR(TIM1和TIM8重复计数寄存器)1514131211109876543210保留REP[7:0]7-0位:开启了预装载功能后,这些位允许用户设置比较寄存器的更新速率(即周期性地从预装载寄存器传输到当前寄存器);如果允许产生更新中断,则会同时影响产生 更新中断的速率。每次向下计数器REP_CNT达到0,会产生一个更新事件并且计数器REP_CNT重新从REP值开始计数。由于REP_CNT只有在周期更新事件U_RC 发生时才重载REP值,因此对TIMx_RCR寄存器写入的新值只在下次周期更新事件发生时才起作用。 这意味着在PWM模式中,(REP+1)对应着:- 在边沿对齐模式下,PWM周期的数目;- 在中心对称模式下,PWM半周期的数目;TIMx_CCR1(TIM1和TIM8捕获/比较寄存器1)1514131211109876543210CCR1[15:0]TIMx_CCR2(TIM1和TIM8捕获/比较寄存器2)1514131211109876543210CCR2[15:0]TIMx_CCR3(TIM1和TIM8捕获/比较寄存器3)1514131211109876543210CCR3[15:0]TIMx_CCR4(TIM1和TIM8捕获/比较寄存器4)1514131211109876543210CCR4[15:0]15-0位:CCR1[15:0]: 捕获/比较通道1的值,若CC1通道配置为输出,CCR1包含了装入当前捕获/比较1寄存器的值(预装载值) 如果在TIMx_CCMR1寄存器(OC1PE位)中未选择预装载功能,写入的数值会立即传输至当前寄存器中。否则只有当更新事件发生时, 此预装载值才传输至当前捕获/比较1寄存器中。当前捕获/比较寄存器参与同计数器TIMx_CNT的比较,并在OC1端口上产生输出信号。 若CC1通道配置为输入,CCR1包含了由上一次输入捕获1事件(IC1)传输的计数器值。TIMx_BDTR(TIM1和TIM8刹车和死区寄存器)1514131211109876543210MOEAOEBKPBKEOSSROSSILOCK[1:0]DTG[7:0]注释: 根据锁定设置,AOE、BKP、BKE、OSSI、OSSR和DTG[7:0]位均可被写保护,有必要在第一次写入TIMx_BDTR寄存器时对它们进行配置15位:MOE主输出使能,一旦刹车输入有效,该位被硬件异步清’0’。根据AOE位的设置值,该位可以由软件清’0’或被自动置1。它仅对配置为输出的通道有效。 定义:0(禁止OC和OCN输出或强制为空闲状态),1(如果设置了相应的使能位(TIMx_CCER寄存器的CCxE、CCxNE位),则开启OC和OCN输出。)14位:AOE自动输出使能,定义:0(MOE只能被软件置’1’),1(MOE能被软件置’1’或在下一个更新事件被自动置’1’(如果刹车输入无效) 注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为’1’,则该位不能被修改13位:BKP刹车输入极性,定义:0(刹车输入低电平有效),1(刹车输入高电平有效),注:任何对该位的写操作都需要一个APB时钟的延迟以后才能起作用 注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为’1’,则该位不能被修改。12位:BKE刹车功能使能,定义:0(禁止刹车输入(BRK及CCS时钟失效事件),1(开启),注:任何对该位的写操作都需要一个APB时钟的延迟以后才能起作用 注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为’1’,则该位不能被修改。11位:OSSR运行模式下“关闭状态”选择,该位用于当MOE=1且通道为互补输出时。没有互补输出的定时器中不存在OSSR位,定义: 0(当定时器不工作时,禁止OC/OCN输出(OC/OCN使能输出信号=0)) 1(当定时器不工作时,一旦CCxE=1或CCxNE=1,首先开启OC/OCN并输出无效电平,然后置OC/OCN使能输出信号=1) 注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为2,则该位不能被修改。10位:OSSI空闲模式下“关闭状态”选择,该位用于当MOE=0且通道设为输出时,注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为2,则该位不能被修改。 定义:0(当定时器不工作时,禁止OC/OCN输出(OC/OCN使能输出信号=0); 1(当定时器不工作时,一旦CCxE=1或CCxNE=1,OC/OCN首先输出其空闲电平,然后OC/OCN使能输出信号=1。)9-8位:LOOK[1:0]锁定设置,该位为防止软件错误而提供写保护,注:在系统复位后,只能写一次LOCK位,一旦写入TIMx_BDTR寄存器,则其内容冻结直至复位。 定义:00(锁定关闭,寄存器无写保护),01(锁定级别1,不能写入TIMx_BDTR寄存器的DTG、BKE、BKP、AOE位和TIMx_CR2寄存器的OISx/OISxN位) 10(锁定级别2,不能写入级别1中的各位,也不能写入CC极性位(一旦相关通道通过CCxS位设为输出,CC极性位是TIMx_CCER寄存器的CCxP/CCNxP位)OSSR/OSSI位 11:锁定级别3,不能写入锁定级别2中的各位,也不能写入CC控制位(一旦相关通道通过CCxS位设为输出,CC控制位是TIMx_CCMRx寄存器的OCxM/OCxPE位);7-0位:死区发生器设置,控制死区事件.DTG[7:5]=0xx => DT=DTG[7:0] × Tdtg,Tdtg = TDTS;DTG[7:5]=10x => DT=(64+DTG[5:0]) × Tdtg,Tdtg=2×TDTS; DTG[7:5]=110 => DT=(32+DTG[4:0]) × Tdtg,Tdtg = 8 × TDTS;DTG[7:5]=111 => DT=(32+DTG[4:0])× Tdtg,Tdtg = 16 × TDTS; 注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为1、2或3,则不能修改这些位。设DT表示其持续时间TIMx_DCR(TIM1和TIM8 DMA控制寄存器)151413121110987654321保留DBL[4:0]保留DBA[4:0]12-8位:DBL[4:0]DMA连续传送长度,这些位定义了DMA在连续模式下的传送长度(当对TIMx_DMAR寄存器进行读或写时,定时器则进行一次连续传送), 即:定义传输的次数,传输可以是半字(双字节)或字节:00000:1次传输 00001:2次传输 ...... 00010:3次传输 ...... 10001:18次传输4-0位:DBA[4:0]DMA基地址,这些位定义了DMA在连续模式下的基地址(当对TIMx_DMAR寄存器进行读或写时),DBA定义为从TIMx_CR1寄存器所在地址开始的偏移量 00000:TIMx_CR1, 00001:TIMx_CR2, 00010:TIMx_SMCR, ......TIMx_DMAR(TIM1和TIM8连续模式的DMA地址)151413121110987654321DMAB[15:0]15-0位:DMAB[15:0]DMA连续传送寄存器,对TIMx_DMAR寄存器的读或写会导致对以下地址所在寄存器的存取操作,TIMx_CR1地址 + DBA + DMA索引,其中: \"TIMx_CR1地址\"是控制寄存器1(TIMx_CR1)所在的地址:\"DBA\"是TIMx_DCR寄存器中定义的基地址:\"DMA索引\"是由DMA自动控制的偏移量,00 它取决于TIMx_DCR寄存器中定义的DBL。通用定时器相关寄存器TIMx_CR1(控制寄存器1)1514131211109876543210保留CKD[1:0]ARPECMS[1:0]DIROPMURSUDISCEN9-8位:CKD[1:0]时钟分频因子,定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比例。 定义:00(tDTS = tCK_INT),01(tDTS = 2 x tCK_INT),10(tDTS = 4 x tCK_INT)11:保留7位:ARPE:自动重装载预装载允许位,定义:0(TIMx_ARR寄存器没有缓冲),1(TIMx_ARR寄存器被装入缓冲器)6-5位:CMS[1:0]选择中央对齐模式,定义:00:边沿对齐模式。计数器依据方向位(DIR)向上或向下计数。 01(中央对齐模式1。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向下计数时被设置) 10(中央对齐模式2。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向上计数时被设置) 11(中央对齐模式3,计数器交替地向上和向下计数,配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,在计数器向上和向下计数时均被设置 注:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。4位:DIR:方向,定义:0(计数器向上计数),1(计数器向下计数),注:当计数器配置为中央对齐模式或编码器模式时,该位为只读3位:OPM:单脉冲模式,定义:0(在发生更新事件时,计数器不停止),1(在发生下一次更新事件(清除CEN位)时,计数器停止)2位:URS:更新请求源,软件通过该位选择UEV事件的源,0(如果使能更新中断或DMA请求,则计数器溢出/下溢-设置UG位-从模式控制器产生的更新会产生) 1:如果使能了更新中断或DMA请求,则只有计数器溢出/下溢才产生更新中断或DMA请求1位:UDIS禁止更新,软件通过该位允许/禁止UEV事件的产生,0:允许UEV。更新(UEV)事件由计数器溢出/下溢,设置UG位,从模式控制器产生的更新,事件产生 具有缓存的寄存器被装入它们的预装载值 1:禁止UEV。不产生更新事件,影子寄存器(ARR、PSC、CCRx)保持它们的值。如果设置了UG位或从模式控制器发出了一个硬件复位, 则计数器和预分频器被重新初始化。0位:CEN使能计数器,定义:0(禁止计数器),1(使能计数器)注:在软件设置了CEN位后,外部时钟、门控模式和编码器模式才能工作。 触发模式可以自动地通过硬件设置CEN位。在单脉冲模式下,当发生更新事件时,CEN被自动清除。TIMx_CR2(控制寄存器2)1514131211109876543210保留TI1SMMS[2:0]CCDS保留7位:TI1S-TI1选择,定义:0(TIMx_CH1引脚连到TI1输入),1(TIMx_CH1、TIMx_CH2和TIMx_CH3引脚经异或后连到TI1输入)6-4位:MMS主模式选择,这3位用于选择在主模式下送到从定时器的同步信息(TRGO)定义: 000:复位 – TIMx_EGR寄存器的UG位被用于作为触发输出(TRGO)。如果是触发输入产生的复位(从模式控制器处于复位模式), 则TRGO上的信号相对实际的复位会有一个延迟 001:使能 – 计数器使能信号CNT_EN被用于作为触发输出(TRGO)。有时需要在同一时间启动多个定时器或控制在一段时间内使能从定时器。 计数器使能信号是通过CEN控制位和门控模式下的触发输入信号的逻辑或产生。 当计数器使能信号受控于触发输入时,TRGO上会有一个延迟,除非选择了主/从模式(见TIMx_SMCR寄存器中MSM位的描述)。 010:更新 – 更新事件被选为触发输入(TRGO)。例如,一个主定时器的时钟可以被用作一个从定时器的预分频器 011:比较脉冲 – 在发生一次捕获或一次比较成功时,当要设置CC1IF标志时(即使它已经为高),触发输出送出一个正脉冲(TRGO) 100:比较 – OC1REF信号被用于作为触发输出(TRGO) 101:比较 – OC2REF信号被用于作为触发输出(TRGO) 110:比较 – OC3REF信号被用于作为触发输出(TRGO) 111:比较 – OC4REF信号被用于作为触发输出(TRGO)3位:CCDS:捕获/比较的DMA选择,定义:0(当发生CCx事件时,送出CCx的DMA请求),1(当发生更新事件时,送出CCx的DMA请求)TIMx_SMCR(从模式控制寄存器)1514131211109876543210ETPECEETPS[1:0]ETP[3:0]MSMTS[2:0]保留SMS[2:0]15位:ETP:外部触发极性,该位选择是用ETR还是ETR的反相来作为触发操作,定义:0(ETR不反相,高电平或上升沿有效),1(ETR被反相,低电平或下降沿有效)14位:ECE:外部时钟使能位,该位启用外部时钟模式2,定义:0(禁止外部时钟模式2)1(使能外部时钟模式2。计数器由ETRF信号上的任意有效边沿驱动 注1:设置ECE位与选择外部时钟模式1并将TRGI连到ETRF(SMS=111和TS=111)具有相同功效。 注2:下述从模式可以与外部时钟模式2同时使用:复位模式、门控模式和触发模式;但是,这时TRGI不能连到ETRF(TS位不能是’111’)。 注3:外部时钟模式1和外部时钟模式2同时被使能时,外部时钟的输入是ETRF13-12位:ETPS外部触发预分频,外部触发信号ETRP的频率必须最多是CK_INT频率的1/4。当输入较快的外部时钟时,可以使用预分频降低ETRP的频率 定义:00(关闭预分频),01(ETRP频率除以2),10(ETRP频率除以4),11(ETRP频率除以8)11-8位:ETF外部触发滤波,这些位定义了对ETRP信号采样的频率和对ETRP数字滤波的带宽。实际上,数字滤波器是一个事件计数器,它记录到N个事件后 会产生一个输出的跳变,定义:0000(无滤波器,以fDTS采样)0001(采样频率fSAMPLING=fCK_INT,N=2)0010(采样频率fSAMPLING=fCK_INT,N=4) 0011(采样频率fSAMPLING=fCK_INT,N=8)0100(采样频率fSAMPLING=fDTS/2,N=6)0101(采样频率fSAMPLING=fDTS/2,N=8) 0110(采样频率fSAMPLING=fDTS/4,N=6)0111(采样频率fSAMPLING=fDTS/4,N=8)1000(采样频率fSAMPLING=fDTS/8,N=6) 1001(采样频率fSAMPLING=fDTS/8,N=8)1010(采样频率fSAMPLING=fDTS/16,N=5)1011:采样频率fSAMPLING=fDTS/16,N=6 1100(采样频率fSAMPLING=fDTS/16,N=8)1101(采样频率fSAMPLING=fDTS/32,N=5)1110(采样频率fSAMPLING=fDTS/32,N=6) 1111(采样频率fSAMPLING=fDTS/32,N=8)7位:MSM主/从模式,定义:0(无作用),1(触发输入(TRGI)上的事件被延迟了,以允许在当前定时器(通过TRGO)与它的从定时器间的完美同步。 这对要求把几个定时器同步到一个单一的外部事件时是非常有用的)6-4位:TS[2:0]:触发选择,这3位选择用于同步计数器的触发输入,定义:000(内部触发0(ITR0),TIM1),001(内部触发1(ITR1),TIM2)010(内部触发2(ITR2),TIM3) 011(内部触发3(ITR3),TIM4)100(TI1的边沿检测器(TI1F_ED))101(滤波后的定时器输入1(TI1FP1)110(滤波后的定时器输入2(TI2FP2) 111(外部触发输入(ETRF)注:这些位只能在未用到(如SMS=000)时被改变,以避免在改变时产生错误的边沿检测。关于定时器细节见P285表782-0位:SMS[2:0]从模式选择,当选择了外部信号,触发信号(TRGI)的有效边沿与选中的外部输入极性相关,定义 000:关闭从模式 – 如果CEN=1,则预分频器直接由内部时钟驱动。001:编码器模式1 – 根据TI1FP1的电平,计数器在TI2FP2的边沿向上/下计数。 010:编码器模式2 – 根据TI2FP2的电平,计数器在TI1FP1的边沿向上/下计数。 011:编码器模式3 – 根据另一个信号的输入电平,计数器在TI1FP1和TI2FP2的边沿向上/下计数。 100:复位模式 – 选中的触发输入(TRGI)的上升沿重新初始化计数器,并且产生一个更新寄存器的信号。 101:门控模式 – 当触发输入(TRGI)为高时,计数器的时钟开启。一旦触发输入变为低,则计数器停止(但不复位)。计数器的启动和停止都是受控的。 110:触发模式 – 计数器在触发输入TRGI的上升沿启动(但不复位),只有计数器的启动是受控的。 111:外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器。注:如果TI1F_EN被选为触发输入(TS=100)时,不要使用门控模式。这是因为,TI1F_ED在每次TI1F变化时输出一个脉冲,然而门控模式是要检查触发输入的电平。TIMx_DIER(DMA/中断使能寄存器)1514131211109876543210保留TDE保留CC4DECC3DECC2DECC1DEUDE保留TIE保留CC4IECC3IECC2IECC1IEUIE14位:TDE:允许触发DMA请求,定义:0(禁止),1(允许)12位:CC4DE:允许捕获/比较4的DMA请求,定义:0(禁止),1(允许)11位:CC3DE:允许捕获/比较3的DMA请求,定义:0(禁止),1(允许)10位:CC2DE:允许捕获/比较2的DMA请求,定义:0(禁止),1(允许)9位:CC1DE:允许捕获/比较1的DMA请求,定义:0(禁止),1(允许)8位:UDE:允许更新的DMA请求,定义:0(禁止),1(允许)6位:TIE:触发中断使能,定义:0(禁止),1(允许)4位:CC4IE:允许捕获/比较4中断,定义:0(禁止),1(允许)3位:CC3IE:允许捕获/比较3中断,定义:0(禁止),1(允许)2位:CC2IE:允许捕获/比较2中断,定义:0(禁止),1(允许)1位:CC1IE:允许捕获/比较1中断,定义:0(禁止),1(允许)0位:UIE允许更新中断,定义:0(禁止),1(允许)TIMx_SR(状态寄存器)1514131211109876543210保留CC4OFCC3OFCC2OFCC1OF保留TIF保留CC4IFCC3IFCC2IFCC1IFUIF9位:CC(1-4)OF:捕获/比较1重复捕获标记,仅当相应的通道被配置为输入捕获时,该标记可由硬件置’1’。写’0’可清除该位,定义:0(无重复捕获产生) 1:当计数器的值被捕获到TIMx_CCR1寄存器时,CC1IF的状态已经为’1’。7位:BIF刹车标记中断,一旦刹车输入有效,由硬件对该位置’1’。如果刹车输入无效,则该位可由软件清’0。定义:0(无刹车),11(有刹车)6位:TIF触发器中断标记,当发生触发事件(当从模式控制器处于除门控模式外的其它模式时,在TRGI输入端检测到有效边沿,或门控模式下的任一边沿) 时由硬件对该位置’1’。它由软件清’0’,定义:0(无触发事件),1(触发器中断等待响应)4,3,2,1位:CC(4-1)IF捕获/比较(4-1)中断标记,如果通道CC1配置为输出模式(软件清0,硬件置1(在中心对称下除外),定义:0(无匹配),1(TIMx_CNT与TIMx_CCR1匹配) 如果通道CC1配置为输入模式:(硬件置1,软件清0,或通过读TIMx_CCR1清’0’),定义:0(无输入捕获产生), 1(计数器值已被捕获(拷贝)至TIMx_CCR1(在IC1上检测到与所选极性相同的边沿)。0位:UIF更新中断标记(硬件置1,软件清0)定义:0(无更新事件)1(更新中断等待响应。当寄存器被更新时该位由硬件置’1’) − 若TIMx_CR1寄存器的UDIS=0、URS=0,当TIMx_EGR寄存器的UG=1时产生更新事件(软件对计数器CNT重新初始化); − 若TIMx_CR1寄存器的UDIS=0、URS=0,当计数器CNT被触发事件重初始化时产生更新事件。(参考同步控制寄存器的说明)TIMx_EGR(事件产生寄存器)1514131211109876543210保留TG保留CC4GCC3GCC2GCC1GUG6位:TG产生触发事件(软件置1,硬件清0),定义:0(无动作),1(TIMx_SR寄存器的TIF=1,若开启对应的中断和DMA,则产生相应的中断和DMA)5位:COMG捕获/比较事件,产生控制更新(软件置1,硬件清0),定义:0(无动作),1(当CCPC=1,允许更新CCxE、CCxNE、OCxM位)注:该位只对拥有互补输出的通道有效4,3,2,1位:CC(4-1)G:产生捕获/比较(4-1)事件(软件置1,硬件清0),定义:0(无动作),1(在通道CC1上产生一个捕获/比较事件) 若通道CC1配置为输出,设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA 若通道CC1配置为输入,当前的计数器值被捕获至TIMx_CCR1寄存器;设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。若CC1IF已经为1,则设置 则设置CC1OF=10位:UG产生更新事件(软件置1,硬件清0),定义:0(无动作),1(重新初始化计数器,并产生一个更新事件。注意预分频器的计数器也被清’0’ (但是预分频系数不变)。若在中心对称模式下或DIR=0(向上计数)则计数器被清’0’;若DIR=1(向下计数)则计数器取TIMx_ARR的值)TIMx_CCMR1(捕获/比较模式寄存器1)1514131211109876543210OC2CEOC2M[2:0]OC2PEOC2FEOC1CEOC1M[2:0]OC1PEOC1FEIC2F[3:0]IC2PSC[1:0]CC2S[1:0]IC1F[3:0]IC1PSC[1:0]CC1S[1:0]TIMx_CCMR2(捕获/比较模式寄存器2)1514131211109876543210OC4CEOC4M[2:0]OC4PEOC4FEOC3CEOC3M[2:0]OC3PEOC3FEIC4F[3:0]IC4PSC[1:0]CC4S[1:0]IC3F[3:0]IC3PSC[1:0]CC3S[1:0]输出比较和输入捕获功能不同,在寄存器中的设置也不同。输出比较模式15位:OC2CE:输出比较2清0使能14-12位:OC2M[2:0]:输出比较2模式11位:OC2PE:输出比较2预装载使能10位:OC2FE:输出比较2快速使能9-8位:CC2S[1:0]:捕获/比较2选择,该位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC2通道被配置为输出) 01(CC2通道被配置为输入,IC2映射在TI2上) 10(CC2通道被配置为输入,IC2映射在TI1上) 11(CC2通道被配置为输入,IC2映射在TRC上。此模式仅工作在内部触发器输入被选中时。 (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC2E=0)才是可写的。9-8位:CC4S[1:0]:捕获/比较4选择;该位定义通道的方向(输入/输出);及输入脚的选择,定义:00(CC4通道被配置为输出)01(CC4通道被配置为输入,IC4映射在TI4上) 10(CC4通道被配置为输入,IC4映射在TI3上) 11(CC4通道被配置为输入,IC4映射在TRC上。此模式仅工作在内部触发器输入被选中时。 (由TIMx_SMCR寄存器的TS位选择),注:CC4S仅在通道关闭时(TIMx_CCER寄存器的CC4E=0)才是可写的。7位:OC1CE:输出比较1清’0’使能,定义:0(OC1REF 不受ETRF输入的影响),1(一旦检测到ETRF输入高电平,清除OC1REF=0)6-4位:OC1M[2:0]输出比较1模式,该3位定义了输出参考信号OC1REF的动作,而OC1REF决定了OC1、OC1N的值。OC1REF是高电平有效,而OC1、OC1N 的有效电平取决于CC1P、CC1NP位,定义:000(冻结。输出比较寄存器TIMx_CCR1与计数器TIMx_CNT间的比较对OC1REF不起作用) 001(匹配时设置通道1为有效电平。当计数器TIMx_CNT的值与捕获/比较寄存器1 (TIMx_CCR1)相同时,强制OC1REF为高),010(强制OC1REF为低) 011(翻转。当TIMx_CCR1=TIMx_CNT时,翻转OC1REF的电平)100(强制为无效电平。强制OC1REF为低)101(强制OC1REF为高) 110:PWM模式1- 在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1 为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。 111:PWM模式2- 在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1 为有效电平,否则为无效电平。 注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=00(该通道配置成输出)则该位不能被修改。 注2:在PWM模式1或PWM模式2中,只有当比较结果改变了或在输出比较模式中从冻结模式切换到PWM模式时,OC1REF电平才改变。3位:OC1PE输出比较1预装载使能,定义:0(禁止TIMx_CCR1寄存器的预装载功能,可随时写入TIMx_CCR1寄存器,并且新写入的数值立即起作用) 1(开启TIMx_CCR1寄存器的预装载功能,读写操作仅对预装载寄存器操作,TIMx_CCR1的预装载值在更新事件到来时被加载至当前寄存器中) 注1:一旦LOCK级别设为3(TIMx_BDTR寄存器中的LOCK位)并且CC1S=00(该通道配置成输出)则该位不能被修改。 注2:仅在单脉冲模式下(TIMx_CR1寄存器的OPM=1),可以在未确认预装载寄存器情况下使用PWM模式,否则其动作不确定2位:OC1FE输出比较1 快速使能,该位用于加快CC输出对触发输入事件的响应,定义: 0(根据计数器与CCR1的值,CC1正常操作,即使触发器是打开的。当触发器的输入有一个有效沿时,激活CC1输出的最小延时为5个时钟周期) 1(输入到触发器的有效沿的作用就象发生了一次比较匹配。因此,OC被设置为比较电平而与比较结果无关。采样触发器的有效沿和CC1输出间的延时被缩短为 3个时钟周期)OCFE只在通道被配置成PWM1或PWM2模式时起作用。1-0位:CC1S[1:0]捕获/比较1 选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC1通道被配置为输出),01(CC1通道被配置为输入,IC1映射在TI1上) 10(CC1通道被配置为输入,IC1映射在TI2上),11(CC1通道被配置为输入,IC1映射在TRC上.此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择) 注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=0)才是可写的。1-0位:CC3S[1:0]捕获/比较3 选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC3通道被配置为输出),01(CC3通道被配置为输入,IC3映射在TI3上) 10(CC3通道被配置为输入,IC3映射在TI4上),11(CC3通道被配置为输入,IC3映射在TRC上.此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择) 注:CC3S仅在通道关闭时(TIMx_CCER寄存器的CC3E=0)才是可写的。输入捕获模式15-12位:输入捕获2滤波器11-10位:CC2S[1:0]输入/捕获2预分频器9-8位:CC2S[1:0]捕获/比较2选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC2通道被配置为输出)01(CC2通道被配置为输入, IC2映射在TI2上),10(CC2通道被配置为输入,IC2映射在TI1上),11(CC2通道被配置为输入,IC2映射在TRC上),此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC2E=0)才是可写的。9-8位:CC4S[1:0]捕获/比较4选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC4通道被配置为输出)01(CC4通道被配置为输入, IC4映射在TI4上),10(CC4通道被配置为输入,IC4映射在TI3上),11(CC4通道被配置为输入,IC4映射在TRC上),此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择),注:CC2S仅在通道关闭时(TIMx_CCER寄存器的CC4E=0)才是可写的。7-4位:IC1F[3:0]:输入捕获1滤波器,这几位定义了TI1输入的采样频率及数字滤波器长度,数字滤波器由一个事件计数器组成,记录到N个事件后会产生一个输出的跳变 定义:0000(无滤波器,以fDTS采样)0010(采样频率fSAMPLING=fCK_INT,N=4)0011(采样频率fSAMPLING=fCK_INT,N=8)0100(fSAMPLING=fDTS/2,N=6) 0101(fSAMPLING=fDTS/2,N=8),0110(fSAMPLING=fDTS/4,N=6),0111(fSAMPLING=fDTS/4,N=8),1000(fSAMPLING=fDTS/8,N=6) 1001(fSAMPLING=fDTS/8,N=8),1010(fSAMPLING=fDTS/16,N=5),1011(fSAMPLING=fDTS/16,N=6),1100(fSAMPLING=fDTS/16,N=8) 1101(fSAMPLING=fDTS/32,N=5),0110(fSAMPLING=fDTS/4,N=6),1110(fSAMPLING=fDTS/32,N=6),0111(fSAMPLING=fDTS/4,N=8) 1111(fSAMPLING=fDTS/32,N=8)3-2位:IC1PSC[1:0]输入/捕获1预分频器,这2位定义了CC1输入(IC1)的预分频系数,一旦CC1E=0(TIMx_CCER寄存器中),则预分频器复位。 00(无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获),01(每2个事件触发一次捕获),10(每4个事件触发一次捕获),11(每8个事件触发一次捕获)1-0位:CC1S[1:0]捕获/比较1选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC1通道被配置为输出),01(CC1通道被配置为输入,IC1映射在TI1上 10(CC1通道被配置为输入,IC1映射在TI2上),11:CC1通道被配置为输入,IC1映射在TRC上。此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择)。注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=0)才是可写的。1-0位:CC3S[1:0]捕获/比较3选择,这2位定义通道的方向(输入/输出),及输入脚的选择,定义:00(CC3通道被配置为输出),01(CC3通道被配置为输入,IC3映射在TI3上 10(CC3通道被配置为输入,IC3映射在TI4上),11:CC3通道被配置为输入,IC3映射在TRC上。此模式仅工作在内部触发器输入被选中时 (由TIMx_SMCR寄存器的TS位选择)。注:CC3S仅在通道关闭时(TIMx_CCER寄存器的CC3E=0)才是可写的。TIMx_CCER(捕获/比较使能寄存器)1514131211109876543210保留CC4PCC4E保留CC3PCC3E保留CC2PCC2E保留CC1PCC1E13,9,5,1位:CC(4-1)P:输入/捕获3输出极性,定义:CC1通道配置为输出-0(OC1高电平有效),1(OC1低电平有效) CC1通道配置为输入:该位选择是IC1还是IC1的反相信号作为触发或捕获信号,0:不反相:捕获发生在IC1的上升沿;当用作外部触发器时,IC1不反相。 1(相反,捕获发生在IC1的下降沿)注:一旦LOCK级别(TIMx_BDTR寄存器中的LOCK位)设为3或2,则该位不能被修改128,4,0位:CC(4-1)E:输入/捕获3输出使能,定义:CC1通道配置为输出- 0(关闭- OC1禁止输出,因此OC1的输出电平依赖于MOE、OSSI、OSSR、OIS1、OIS1N和CC1NE位的值),1(开启) CC1通道配置为输入,该位决定了计数器的值是否能捕获入TIMx_CCR1寄存器。0(捕获禁止),1(捕获使能)TIMx_CNT(计数器)1514131211109876543210CNT[15:0]0-15位:CNT[15:0]计数器的值TIMx_PSC(预分频器)1514131211109876543210PSC[15:0]0-15位:PSC[15:0]预分频器的值,计数器的时钟频率(CK_CNT)等于fCK_PSC/( PSC[15:0]+1)。 PSC包含了每次当更新事件产生时,装入当前预分频器寄存器的值;更新事件包括计数器被TIM_EGR的UG位清’0’或被工作在复位模式的从控制器清’0’TIMx_ARR(自动重装载寄存器)1514131211109876543210ARR[15:0]15-0位:ARR[15:0]自动重装载的值,ARR包含了将要传送至实际的自动重装载寄存器的数值,当自动重装载的值为空时,计数器不工作TIMx_CCR1(捕获/比较寄存器1)CCR1[15:0]TIMx_CCR2(捕获/比较寄存器1)CCR2[15:0]TIMx_CCR3(捕获/比较寄存器1)CCR3[15:0]TIMx_CCR4(捕获/比较寄存器1)CCR4[15:0]15-0位:CCR1[15:0]捕获/比较1的值,若CC1通道配置为输出:CCR1包含了装入当前捕获/比较1寄存器的值(预装载值)。 如果在TIMx_CCMR1寄存器(OC1PE位)中未选择预装载特性,写入的数值会被立即传输至当前寄存器中。否则只有当更新事件发生时, 此预装载值才传输至当前捕获/比较1寄存器中。当前捕获/比较寄存器参与同计数器TIMx_CNT的比较,并在OC1端口上产生输出信号。 若CC1通道配置为输入:CCR1包含了由上一次输入捕获1事件(IC1)传输的计数器值TIMx_DCR(DMA控制寄存器)151413121110987654321保留DBL[4:0]保留DBA[4:0]12-8位:DBL[4:0]DMA连续传送长度,这些位定义了DMA在连续模式下的传送长度(当对TIMx_DMAR寄存器进行读或写时,定时器则进行一次连续传送), 即:定义传输的次数,传输可以是半字(双字节)或字节:00000:1次传输 00001:2次传输 ...... 00010:3次传输 ...... 10001:18次传输4-0位:DBA[4:0]DMA基地址,这些位定义了DMA在连续模式下的基地址(当对TIMx_DMAR寄存器进行读或写时),DBA定义为从TIMx_CR1寄存器所在地址开始的偏移量 00000:TIMx_CR1, 00001:TIMx_CR2, 00010:TIMx_SMCR, ......TIMx_DMAR(连续模式的DMA地址)151413121110987654321DMAB[15:0]15-0位:DMAB[15:0]DMA连续传送寄存器,对TIMx_DMAR寄存器的读或写会导致对以下地址所在寄存器的存取操作,TIMx_CR1地址 + DBA + DMA索引,其中: \"TIMx_CR1地址\"是控制寄存器1(TIMx_CR1)所在的地址:\"DBA\"是TIMx_DCR寄存器中定义的基地址:\"DMA索引\"是由DMA自动控制的偏移量, 它取决于TIMx_DCR寄存器中定义的DBL。00基本定时器相关寄存器TIMx_CR1(TIM6和TIM7控制寄存器1)151413121110987654321保留ARPE保留OPMURSUDISCEN7位:ARPE自动重装载预装载使能,定义:0(TIMx_ARR寄存器没有缓冲)1(TIMx_ARR寄存器具有缓冲)3位:OPM单脉冲模式,定义:0(在发生更新事件时,计数器不停止),1(在发生下次更新事件时,计数器停止计数(清除CEN位)2位:URS更新请求源,该位由软件设置和清除,以选择UEV事件的请求源。定义:0(如果使能了中断或DMA,以下任一事件可以产生一个更新中断或DMA请求: 计数器上下溢出,设置UG位,通过从模式控制器产生更新),1(如果使能了中断或DMA,只有计数器上溢或下溢可以产生更新中断或DMA请求)1位:该位由软件设置和清除,以使能或禁止UEV事件的产生,定义:0(UEV使能。更新事件(UEV)可以由下列事件产生:计数器上下溢出,设置UG位, 通过从模式控制器产生更新,产生更新事件后,带缓冲的寄存器被加载为预加载数值。) 1:禁止UEV。不产生更新事件(UEV),影子寄存器保持它的内容(ARR、PSC)。但是如果设置了UG位或从模式控制器产生了一个硬件复位, 则计数器和预分频器将被重新初始化0位:CEN计数器使能,0(关闭计数器),1(开启),注:门控模式只能在软件已经设置了CEN位时有效,而触发模式可以自动地由硬件设置CEN位 在单脉冲模式下,当产生更新事件时CEN被自动清除。TIMx_CR2(TIM6和TIM7控制寄存器2) 151413121110987654321MMS[2:0]6-4位:这些位用于选择在主模式下向从定时器发送的同步信息(TRGO),有以下几种组合: 000:复位使用TIMx_EGR寄存器的UG位作为触发输出(TRGO)。如果触发输入产生了复位(从模式控制器配置为复位模式),则相对于实际的复位信号, TRGO上的信号有一定的延迟。00 001:使能 – 计数器使能信号CNT_EN被用作为触发输出(TRGO)。它可用于在同一时刻启动多个定时器,或控制使能从定时器的时机。计数器使能信号是通过 CEN控制位和配置为门控模式时的触发输入的’逻辑或’产生。当计数器使能信号是通过触发输入控制时,在TRGO输出上会有一些延迟,除非选择了 主/从模式(见TIMx_SMCR寄存器的MSM位)。 010:更新 – 更新事件被用作为触发输出(TRGO)。例如一个主定时器可以作为从定时器的预分频器使用。TIMx_DIER(TIM6和TIM7 DMA/中断使能寄存器)151413121110987654321UDEUIE8位:UDE更新DMA请求使能,定义:0(禁止更新DMA请求),1(使能更新DMA请求)0位:UIE更新中断使能,定义:0(禁止更新中断)。1(使能更新中断)TIMx_SR(TIM6和TIM7状态寄存器)151413121110987654321保留UIF0位:UIF更新中断标志(硬件置位,软件清除),定义:0(没有产生更新),1(产生了更新中断)– 计数器产生上溢或下溢并且TIMx_CR1中的UDIS=0; 如果TIMx_CR1中的URS=0并且UDIS=0,当使用TIMx_EGR寄存器的UG位重新初始化计数器CNT时。TIMx_EGR(TIM6和TIM7事件产生寄存器)151413121110987654321保留UG0位:UG产生更新事件,软件置1,硬件清零,定义:0(无作用),1(重新初始化定时器的计数器并产生对寄存器的更新。注意:预分频器也被清除(但预分频系数不变)。TIMx_CNT(TIM6和TIM7计数器)151413121110987654321CNT[15:0]0-15位:CNT[15:0]计数器的值TIMx_PSC(TIM6和TIM7预分频器)151413121110987654321PSC[15:0]0-15位:PSC[15:0]预分频器的值,计数器的时钟频率(CK_CNT)等于fCK_PSC/( PSC[15:0]+1)。 PSC包含了每次当更新事件产生时,装入当前预分频器寄存器的值;更新事件包括计数器被TIM_EGR的UG位清’0’或被工作在复位模式的从控制器清’0’TIMx_ARR(TIM6和TIM7自动重装载寄存器)151413121110987654321ARR[15:0]15-0位:ARR[15:0]自动重装载的值,ARR包含了将要传送至实际的自动重装载寄存器的数值,当自动重装载的值为空时,计数器不工作311530142913281227113126103025929248282372722626215252042419323182221712100000016020RTC相关寄存器151413121110RTC_CRH(RTC控制寄存器高位)9876543210保留OWIEALRIERECIE2位:OWIE允许溢出中断位,定义:0(屏蔽中断),1(允许中断)1位:ALRIE允许闹钟中断位,定义:0(屏蔽中断),1(允许中断)0位:SECIE允许秒中断位,定义:0(屏蔽中断),1(允许中断)RTC_CRL(RTC控制寄存器低位)1514131211109876543210保留RTOFFCNFRSFOWFALRFSECF5位:RTOFFRTC操作关闭(只读位)TC模块利用这位来指示对其寄存器进行的最后一次操作的状态,指示操作是否完成。若此位为’0’, 则表示无法对任何的RTC寄存器进行写操作。定义:0(上一次对RTC寄存器的写操作仍在进行),1(上一次对RTC寄存器的写操作已经完成)4位:CNF配置标志,此位必须由软件置’1’以进入配置模式,从而允许向RTC_CNT、RTC_ALR或RTC_PRL寄存器写入数据。只有当此位在被置’1’ 并重新由软件清’0’后,才会执行写操作,定义:0(退出配置模式(开始更新RTC寄存器),1(进入配置模式)3位:RSF寄存器同步标志,每当RTC_CNT寄存器和RTC_DIV寄存器由软件更新或清’0’时,此位由硬件置’1’。在APB1复位后,或APB1时钟停止后,此位必须由 软件清’0’。要进行任何的读操作之前,用户程序必须等待这位被硬件置’1’,以确保RTC_CNT、RTC_ALR或RTC_PRL已经被同步。 定义:0(寄存器尚未被同步),1(寄存器已经被同步)2位:OWF溢出标志,当32位可编程计数器溢出时,此位由硬件置’1’。如果RTC_CRH寄存器中OWIE=1,则产生中断。此位只能由软件清’0’。 对此位写’1’是无效的,定义:0(无溢出),1(32位可编程计数器溢出)1位:ALRF闹钟标志,当32位可编程计数器达到RTC_ALR寄存器所设置的预定值,此位由硬件置’1’。如果RTC_CRH寄存器中ALRIE=1,则产生中断。 此位只能由软件清’0’。对此位写’1’是无效的,定义:0(无闹钟),1(有闹钟)0位:SECF秒标志,当32位可编程预分频器溢出时,此位由硬件置’1’同时RTC计数器加1。因此,此标志为分辨率可编程的RTC计数器提供一个周期性的信号(通常为1秒)。 如果RTC_CRH寄存器中SECIE=1,则产生中断。此位只能由软件清除。对此位写’1’是无效的 ,定义:0(秒标志条件不成立),1(秒标志条件成立)注1:任何标志位都将保持挂起状态,直到适当的RTC_CR请求位被软件复位,表示所请求的中断已经被接受注2:在复位时禁止所有中断,无挂起的中断请求,可以对RTC寄存器进行写操作。注3:当APB1时钟不运行时,OWF、ALRF、SECF和RSF位不被更新注4:OWF、ALRF、SECF和RSF位只能由硬件置位,由软件来清零。注5:若ALRF=1且ALRIE=1,则允许产生RTC全局中断。如果在EXTI控制器中允许产生EXTI线 17中断,则允许产生RTC全局中断和RTC闹钟中断注6:若ALRF=1,如果在EXTI控制器中设置了EXTI线 17的中断模式,则允许产生RTC闹钟中断;如果在EXTI控制器中设置了EXTI线 17的事件模式, 则这条线上会产生一个脉冲(不会产生RTC闹钟中断)RTC_PRLH(RTC预分频装载寄存器高位)1514131211109876543210保留PRL[19:16]3-0位:PRL[19:16]RTC预分频装载值高位,fTR_CLK = fRTCCLK/(PRL[19:0]+1),注:不推荐使用0值,否则无法正确的产生RTC中断和标志位。RTC_PRLL(RTC预分频装载寄存器低位)9876PRL[15:0]15141312111054321015-0位:PRL[15:0]RTC预分频装载值低位RTC_DIVH(RTC预分频器余数寄存器高位)1514131211109876保留3-0位:RTC_DIV[19:16]RTC时钟分频器余数高位,只读寄存器RTC_DIVL(RTC预分频器余数寄存器低位)54321RTC_DIV[19:0]0151413121110987RTC_DIV[15:0]654321015-0位:RTC_DIV[15:0]RTC时钟分频器余数低位,只读寄存器RTC_CNTH(RTC计数器寄存器高位)151413121110987654321RTC_CNT[31:16]15-0位:RTC_CNT[31:16]RTC计数器高位,可通过读RTC_CNTH寄存器来获得RTC计数器当前值的高位部分。要对此寄存器进行写操作前,必须先进入配置模式RTC_CNTL(RTC计数器寄存器低位)151413121110987654321RTC_CNT[15:0]15-0位:RTC_CNT[15:0]RTC计数器低位,可通过读RTC_CNTH寄存器来获得RTC计数器当前值的低位部分。要对此寄存器进行写操作前,必须先进入配置模式RTC_ALRH(RTC闹钟寄存器高位)151413121110987654321RTC_ALR[31:16]15-0位:RTC_ALR[31:16]RTC闹钟值高位,此寄存器用来保存由软件写入的闹钟时间的高位部分。要对此寄存器进行写操作,必须先进入配置模式RTC_ALRL(RTC闹钟寄存器低位)151413121110987654321RTC_ALR[15:0]15-0位:RTC_ALR[31:16]RTC闹钟值低位,此寄存器用来保存由软件写入的闹钟时间的低位部分。要对此寄存器进行写操作,必须先进入配置模式0000独立看门狗相关寄存器键寄存器(IWDG_KR)313029282726252423222120191817保留151413121110987654321KEY[15:0]15-0位:KEY[15:0]键值(只写寄存器,读出值为0x0000),软件必须以一定的间隔写入0xAAAA,否则,当计数器为0时,看门狗会产生复位。 写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器,写入0xCCCC,启动看门狗工作(若选择了硬件看门狗则不受此命令字限制)IWDG_PR(预分频寄存器)313029282726252423222120191817保留151413121110987654321保留PR[2:0]PR[2:0]: 预分频因子,这些位具有写保护设置,通过设置这些位来选择计数器时钟的预分频因子。要改变预分频因子,IWDG_SR寄存器的PVU位必须为0。 定义:000(预分频因子=4)001(分频因子=8)010(=16)011(=32)100(=64)101(=128)110(=256)111(=256). 注意:对此寄存器进行读操作, 将从VDD电压域返回预分频值。如果写操作正在进行,则读回的值可能是无效的。因此,只有当IWDG_SR寄存器的PVU位为0时,读出的值才有效。IWDG_RLR(重装载寄存器)313029282726252423222120191817保留151413121110987654321保留RL[11:0]16016016011-0位:RL[11:0]看门狗计数器重装载值,这些位具有写保护功能,参看17.3.2节。用于定义看门狗计数器的重装载值,每当向IWDG_KR寄存器写入0xAAAA时, 重装载值会被传送到计数器中。随后计数器从这个值开始递减计数。看门狗超时周期可通过此重装载值和时钟预分频值来计算,参照表83。只有当IWDG_SR 寄存器中的RVU位为0时,才能对此寄存器进行修改。注:对此寄存器进行读操作,将从VDD电压域返回预分频值。如果写操作正在进行, 则读回的值可能是无效的。因此,只有当IWDG_SR寄存器的RVU位为0时,读出的值才有效。IWDG_SR(状态寄存器)313029282726252423222120191817保留151413121110987654321保留RVUPVU1位:RVU看门狗计数器重装载值更新,此位由硬件置’1’用来指示重装载值的更新正在进行中。当在VDD域中的重装载更新结束后,此位由硬件清’0’ (最多需5个40kHz的RC周期)。重装载值只有在RVU位被清’0’后才可更新。0位:PVU看门狗预分频值更新,此位由硬件置’1’用来指示预分频值的更新正在进行中。当在VDD域中的预分频值更新结束后,此位由硬件清’0’ (最多需5个40kHz的RC周期)。预分频值只有在PVU位被清’0’后才可更新。160窗口看门狗相关寄存器311530142913282726252423222120191817160121110987654321保留WDGAT6T5T4T3T2T1T07位:WDGA激活位,此位由软件置’1’,但仅能由硬件在复位后清’0’。当WDGA=1时,看门狗可以产生复位。定义:0(禁止),1(启用)6-0位:T[6:0]7位计数器,这些位用来存储看门狗的计数器值。每(4096x2WDGTB)个PCLK1周期减1。当计数器值从40h变为3Fh时(T6变成0),产生看门狗复位。WWDG_CFR(配置寄存器)313029282726252423222120191817保留151413121110987654321保留EWIWDGTB1WDGTB0W6W5W4W3W2W1W09位:EWI提前唤醒中断,此位若置’1’,则当计数器值达到40h,即产生中断。此中断只能由硬件在复位后清除8-7位:WDGTB[1:0]时基,预分频器的时基可以设置如下:00(CK计时器时钟(PCLK1除以4096)除以1)01(除以2),10(除以4),11(除以8)6-0位:W[6:0]7位窗口值,这些位包含了用来与递减计数器进行比较用的窗口值WWDG_SR(状态寄存器)313029282726252423222120191817保留151413121110987654321保留EWIF0位:EWIF提前唤醒中断标志,当计数器值达到40h时,此位由硬件置'1'。它必须通过软件写'0'来清除。对此位写'1'无效。若中断未被使能,此位也会被置'1'。160160可配置静态存储器控制器相关寄存器3115保留EXTMOD3014WAITEN2913WRENFSMC_BCR1…4(SRAM/NOR闪存片选控制寄存器 1…4)2827262524232221保留12111098765WAITCFGWRAPMODWAITPOLBURSTEN保留FACCENMWID[2:0]2019CBURSTRW43MTYP[2:0]1817保留21MUXENMBKEN16019位:CBURSTRW成组写使能位,对于Cellular RAM,该位使能写操作的同步成组传输协议。定义:0(写操作始终处于异步模式),1(写操作为同步模式) 对于处于成组传输模式的闪存存储器,这一位允许/禁止通过NWAIT信号插入等待状态。读操作的同步成组传输协议使能位是FSMC_BCRx寄存器的BURSTEN位14位:EXTMOD扩展模式使能,该位允许FSMC使用FSMC_BWTR寄存器,即允许读和写使用不同的时序。定义:0(0:不使用FSMC_BWTR寄存器,这是复位后的默认状态) 1(FSMC使用FSMC_BWTR寄存器)13位:WAITEN等待使能位,当闪存存储器处于成组传输模式时,这一位允许/禁止通过NWAIT信号插入等待状态。 0(禁用NWAIT信号,在设置的闪存保持周期之后不会检测NWAIT信号插入等待状态) 1(使用NWAIT信号,在设置的闪存保持周期之后根据NWAIT信号插入等待状态;这是复位后的默认状态)12位:WREN写使能位,该位指示FSMC是否允许/禁止对存储器的写操作。定义:0(禁止FSMC对存储器的写操作,否则产生一个AHB错误。)1(允许复位后的默认状态)11位:WAITCFG配置等待时序,当闪存存储器处于成组传输模式时,NWAIT信号指示从闪存存储器出来的数据是否有效或是否需要插入等待周期。 该位决定存储器是在等待状态之前的一个时钟周期产生NWAIT信号,还是在等待状态期间产生NWAIT信号。 定义: 0(NWAIT信号在等待状态前的一个数据周期有效;这是复位后的默认状态。) 1(NWAIT信号在等待状态期间有效(不适用于Cellular RAM))10位:WRAPMOD支持非对齐的成组模式,该位决定控制器是否支持把非对齐的AHB成组操作分割成2次线性操作;该位仅在存储器的成组模式下有效。 定义: 0(不允许直接的非对齐成组操作;这是复位后的默认状态)1(允许直接的非对齐成组操作)9位:WAITPOL等待信号极性,设置存储器产生的等待信号的极性;该位仅在存储器的成组模式下有效。定义:0(NWAIT低有效;这是复位后的默认状态)1(高有效)8位:BURSTEN成组模式使能,允许对闪存存储器进行成组模式访问;该位仅在闪存存储器的同步成组模式下有效。定义:0(禁用成组访问模式;复位后状态)1(使用)6位:FACCEN闪存访问使能,允许对NOR闪存存储器的访问操作,定义:0(禁止对NOR闪存存储器的访问操作),1(允许)5-4位:MWID存储器数据总线宽度,定义外部存储器总线的宽度,适用于所有类型的存储器,定义:00(8位),1(16位默认)3-2位:MTYP存储器类型,定义外部存储器的类型,00(SRAM、ROM(存储器块2...4在复位后的默认值),01(PSRAM(Cellular RAM: CRAM) 10(NOR闪存(存储器块1在复位后的默认值),11:保留1位:MUXEN地址/数据复用使能位,当设置了该位后,地址的低16位和数据将共用数据总线,该位仅对NOR和PSRM存储器有效,0(地址/数据不复用) 1(地址/数据复用数据总线;这是复位后的默认状态)0位:MBKEN存储器块使能位,开启对应的存储器块。复位后存储器块1是开启的,其它所有存储器块为禁用。访问一个禁用的存储器块将在AHB总线上产生一个错误。 定义:0(禁用对应的存储器块) 1(启用对应的存储器块)FSMC_BTR1…4(SRAM/NOR闪存片选时序寄存器)31302928272625242322212019181716保留ACCMODDATLATCLKDIVBUSTURN1514131211109876543210DATASTADDHLDADDSET29-28位:ACCMOD访问模式,定义异步访问模式。这2位只在FSMC_BCRx寄存器的EXTMOD位为1时起作用,定义:00(访问模式A),01(B),10(C),11(D)27-24位:DATLAT(见本表格下面的注释):(同步成组式NOR闪存的)数据保持时间,处于同步成组模式的NOR闪存,需要定义在读取第一个数据之前等待的存储器周期数目。 这个时间参数不是以HCLK表示,而是以闪存时钟(CLK)表示。在访问异步NOR闪存、SRAM或ROM时,这个参数不起作用。操作CRAM时,这个参数必须为0。 定义:0000(第一个数据保持时间为2个CLK时钟周期)。。。1111(17个CLK时钟周期,默认)在访问异步NOR闪存、SRAM或ROM时,这个参数不起作用23-20位:CLKDIV时钟分频比(CLK信号),定义CLK时钟输出信号的周期:0000(保留),0001(1个CLK周期=2个HCLK周期)0010(1个CLK=3个HCLK)…(16个HCLK)19-16位:BUSTURN总线恢复时间,这些位用于定义一次读操作之后在总线上的延迟(仅适用于总线复用模式的NOR闪存操作),一次读操作之后控制器需要在数据总线上 为下次操作送出地址,这个延迟就是为了防止总线冲突。如果扩展的存储器系统不包含总线复用模式的存储器,或最慢的存储器可以在6个HCLK时钟周期内将 数据总线恢复到高阻状态,可以设置这个参数为其最小值。定义:0000(总线恢复时间=1个HCLK时钟周期),1(16个HCLK时钟周期,默认)15-8位:DATAST数据保持时间,这些位定义数据的保持时间(见图162图174至),适用于SRAM、ROM和异步总线复用模式的NOR闪存操作,定义:0000 0000(保留) 00000001(DATAST保持时间=2个HCLK时钟周期)1111 1111(256个HCLK,默认)。对于每一种存储器类型和访问方式的数据保持时间,(见图162图174)。7-4位:ADDHLD地址保持时间,这些位定义地址的保持时间(见图171图174至),适用于SRAM、ROM和异步总线复用模式的NOR闪存操作。定义: 0000(ADDHLD保持时间=1个HCLK时钟周期)1111(16个HCLK,默认)注:在同步操作中,这个参数不起作用,地址保持时间始终是1个存储器时钟周期。3-0位:ADDSET地址建立时间,这些位定义地址的建立时间(见图162图174至),适用于SRAM、ROM和异步总线复用模式的NOR闪存操作,定义: 0000(ADDSET建立时间=1个HCLK时钟周期)1111(16个HCLK,默认)注:在同步操作中,这个参数不起作用,地址建立时间始终是1个存储器时钟周期。FSMC_BWTR1…4(SRAM/NOR闪存写时序寄存器 1…4)31302928272625242322212019181716保留ACCMODDATLATCLKDIV保留1514131211109876543210DATASTADDHLDADDSET29-28位:ACCMOD访问模式,定义异步访问模式。这2位只在FSMC_BCRx寄存器的EXTMOD位为1时起作用,定义:00(访问模式A),01(B),10(C),11(D)27-24位:DATLAT:(NOR闪存的同步成组模式)数据保持时间,定义在读取第一个数据之前等待的存储器周期数目,注:操作CRAM时,这个参数必须为0。定义: 0000(第一个数据的保持时间为2个CLK时钟周期)1111(17个CLK), 注:这个时间参数不是以HCLK表示,而是以闪存时钟(CLK)表示。2、在访问异步NOR闪存、SRAM或ROM时,这个参数不起作用23-20位:CLKDIV时钟分频比(CLK信号),定义CLK时钟输出信号的周期:0000(保留),0001(1个CLK周期=2个HCLK周期)0010(1个CLK=3个HCLK)…(16个HCLK)15-8位:DATAST数据保持时间,这些位定义数据的保持时间(见图162图174至),适用于SRAM、ROM和异步总线复用模式的NOR闪存操作,定义:0000 0000(保留) 00000001(DATAST保持时间=2个HCLK时钟周期)1111 1111(256个HCLK,默认)。对于每一种存储器类型和访问方式的数据保持时间,(见图162图174)。7-4位:ADDHLD地址保持时间,这些位定义地址的保持时间(见图171图174至),适用于SRAM、ROM和异步总线复用模式的NOR闪存操作。定义: 0000(ADDHLD保持时间=1个HCLK时钟周期)1111(16个HCLK,默认)注:在同步操作中,这个参数不起作用,地址保持时间始终是1个存储器时钟周期。3-0位:ADDSET地址建立时间,这些位定义地址的建立时间(见图162图174至),适用于SRAM、ROM和异步总线复用模式的NOR闪存操作,定义: 0000(ADDSET建立时间=1个HCLK时钟周期)1111(16个HCLK,默认)注:在同步操作中,这个参数不起作用,地址建立时间始终是1个存储器时钟周期。FSMC_PCR2..4(PC卡/NAND闪存控制寄存器 2..4)31302928272625242322212019181716保留ECCPSTAR[3]1514131211109876543210TAR[2:0]TCLR[4:0]保留ECCENPWID[2:0]PTYPPBKENPWAITEN保留19-17位:ECCPSECC页面大小,定义扩展的ECC页面大小:000(256字节),001(512字节),010(1024),011(2048),100(4096),101(8192)16-13位:TAR-ALE至RE的延迟,以AHB时钟周期(HCLK)为单位设置从ALE变低至RE变低的时间,时间计算:t_ar = (TAR + SET + 4) x THCLK, 这里THCLK表示HCLK周期长度,定义:0000(1个HCLK周期(默认值))1111(16个HCLK)注:根据不同的地址空间,SET是MEMSET或是ATTSET12-9位:TCLRCLE至RE的延迟,以AHB时钟周期(HCLK)为单位设置从CLE变低至RE变低的时间。时间计算:t_clr = (TCLR + SET + 4) x THCLK,THCLK表示HCLK周期长度 定义:0000(1个HCLK周期(默认值),。。。1111(16个HCLK),注:根据不同的地址空间,SET是MEMSET或是ATTSET6位:ECCENECC计算电路使能位,0(关闭并复位ECC电路(复位后的默认值),1(使能ECC电路)5-4位:PWID数据总线宽度,定义外部NAND闪存数据总线的宽度,定义:00(8位默认值),01(16位(PC卡必须使用此设置)10,11(保留)3位:PTYP存储器类型,定义对应的存储器块上连接的存储器类型,定义:0(PC卡、CF卡、CF+卡或PCMCIA),1(NAND闪存(复位后的默认值)2位:PBKEN-PC卡/NAND存储器块使能位,使能存储器块。访问一个未使能的存储器块会产生一个AHB总线错误,定义:0(关闭对应的存储器块,默认值);1(使能)1位:PWAITEN等待功能使能位,使能PC卡/NAND闪存存储器块的等待功能,定义:0(关闭,默认),1(使能)注:对于PC卡,如果使能了等待功能, MEMWAITx/ATTWAITx/IOWAITx位的值必须高于tv(IORDY-NOE)/THCLK+4,其中tv(IORDY-NOE)是一旦NOE为低时NWAIT变低所需的最长时间FSMC_SR2..4(FIFO状态和中断寄存器 2..4)31302928272625242322212019181716保留1514131211109876543210保留FEMPTIFENILENIRENIFSIRSIRS6位:FEMPT-FIFO空标志,只读位,指示FIFO状态,定义:0(FIFO不空),1(FIFO空)5位:IFEN中断下降沿检测使能,定义:0(关闭中断下降沿检测请求),1(使能中断下降沿检测请求)4位:ILEN中断高电平检测使能,定义:0(关闭中断高电平检测请求),1(使能中断高电平检测请求)3位:IREN上升沿中断检测使能,定义:0(关闭中断上降沿检测请求),1(使能中断上降沿检测请求)2位:IFS中断下降沿状态,该位由硬件设置,软件清除,定义:0(没有产生中断下降沿),1(产生了中断下降沿)1位:IRS中断高电平状态,该位由硬件设置,软件清除,定义:0(没有产生中断高电平),1(产生了中断高电平)0位:IRS中断上升沿状态,该位由硬件设置,软件清除,定义:0(没有产生中断上升沿),1(产生了中断上升沿)FSMC_PMEM2..4(通用存储空间时序寄存器 2..4)31302928272625242322212019181716MEMHIZxMEMHOLDx1514131211109876543210MEMWAITxMEMSETx31-24位:MEMHIZx在通用空间x数据总线的高阻时间,当在通用存储空间x开始执行对PC卡/NAND闪存的写操作后,数据总线需要保持一段时间的高阻状态,该参数 以HCLK时钟周期数目(NAND类型时+1)定义数据总线高阻态的时间。这个参数仅对写操作有效 定义:0000 0000(0x00)PC卡为0个HCLK周期/NAND闪存为1个HCLK周期;1111 1111(0xFF)PC卡为255个HCLK周期/NAND闪存为256个HCLK周期,默认23-16位:MEMHOLDx在通用空间x的保持时间,当在通用存储空间x对PC卡/NAND闪存进行读或写操作时,该参数以HCLK时钟周期数目定义了发送命令(NWE、NOE变高)后, 地址信号(对于写操作则是数据信号)保持的时间。定义:00000000(保留),00000001(1个HCLK周期),11111111(255个HCLK周期,默认)15-8位:MEMWAITx在通用空间x的等待时间,当在通用存储空间x对PC卡/NAND闪存进行读或写操作时,该参数以HCLK(+1)时钟周期数目定义了保持命令(NWE、NOE为低) 的最小时间。当该参数定义的时间结束时,如果等待信号(NWAIT)有效(低),则命令的保持时间会被拉长。定义:0000 0000(保留) 0000 0001(2个HCLK周期(加上由NWAIT信号变低引入的等待周期),1111 1111(256个HCLK周期(加上由卡的NWAIT信号变低引入的等待周期,默认值)7-0位:当在通用存储空间x对PC卡/NAND闪存进行读或写操作时,该参数以HCLK(操作PC卡时+1,操作NAND闪存时+2)时钟周期数目定义了发送命令(NWE、NOE变低)之前 建立地址信号的时间。定义:00000000(PC卡为1个HCLK周期/NAND闪存为2个HCLK周期)11111111(PC卡为256个HCLK周期/NAND闪存为257个HCLK周期,默认FSMC_PATT2..4 (属性存储空间时序寄存器 2..4)31302928272625242322212019181716ATTHIZxATTHOLDx1514131211109876543210ATTWAITxATTSETx31-24位:ATTHIZx在属性空间x数据总线的高阻时间,当在属性存储空间x开始执行对PC卡/NAND闪存的写操作后,数据总线需要保持一段时间的高阻状态, 该参数以HCLK时钟周期数目定义数据总线高阻态的时间。这个参数仅对写操作有效。定义:00000000(0个HCLK周期),1111 1111(255个HCLK周期默认)。23-16位:ATTHOLDx在属性空间x的保持时间,当在属性存储空间x对PC卡/NAND闪存进行读或写操作时,该参数以HCLK时钟周期数目定义了发送命令(NWE、NOE变高)后, 地址信号(对于写操作则是数据信号)保持的时间,定义:00000000(保留),0000 0001(1个HCLK周期),11111111(255个HCLK周期默认值)。15-8位:ATTWAITx在属性空间x的等待时间,当在属性存储空间x对PC卡/NAND闪存进行读或写操作时,该参数以HCLK(+1)时钟周期数目定义了保持命令(NWE、NOE为低) 的最小时间。当该参数定义的时间结束时如果等待信号(NWAIT)有效(低),则命令的保持时间会被拉长,定义: 0000 0000(1个HCLK周期(加上由NWAIT信号变低引入的等待周期),1111 1111(256个HCLK周期(加上由卡的NWAIT信号变低引入的等待周期,默认值)。7-0位:ATTSETx在属性空间x的建立时间,当在属性存储空间x对PC卡/NAND闪存进行读或写操作时,该参数以HCLK(+1)时钟周期数目定义了发送命令(NWE、NOE变低) 之前建立地址信号的时间,定义:0000 0000(1个HCLK周期),1111 1111(256个HCLK周期,默认值)。FSMC_PIO4 (I/O空间时序寄存器4)31302928272625242322212019181716IOHIZxIOHOLDx1514131211109876543210IOWAITxIOSETx31-24位:IOHIZx在I/O空间x数据总线的高阻时间,当在I/O空间x开始执行对PC卡的写操作后,数据总线需要保持一段时间的高阻状态,该参数以HCLK时钟周期数目 定义数据总线高阻态的时间。这个参数仅对写操作有效,定义:00000000(0个HCLK周期),11111111(255个HCLK周期,默认值)。23-16位:IOHOLDx在I/O空间x的保持时间,当在I/O空间x对PC卡进行读或写操作时,该参数以HCLK时钟周期数目定义了发送命令(NWE、NOE变高)后, 地址信号(对于写操作则是数据信号)保持的时间,定义:00000000(保留),0000 0001(1个HCLK周期),11111111(255个HCLK周期默认值)。15-8位:IOWAITx在I/O空间x的等待时间,当在I/O空间x对PC卡进行读或写操作时,该参数以HCLK(+1)时钟周期数目定义了保持命令(SMNWE、SMNOE为低)的最小时间。 当该参数定义的时间结束时,如果等待信号(NWAIT)有效(低),则命令的保持时间会被拉长 定义:0000 0000(保留),00000001(2个HCLK周期(加上由NWAIT信号变低引入的等待周期);11111111(256个HCLK周期(加NWAIT等待周期,默认值)7-0位:IOSETx在I/O空间x的建立时间,当I/O空间x对PC卡进行读或写操作时,该参数以HCLK(+1)时钟周期数目定义了发送命令(NWE、NOE变低)之前建立地址信号的时间ECC结果寄存器2/3 (FSMC_ECCR2/3)31302928272625242322212019181716ECCX[31:16]1514131211109876543210ECCX[15:0]31-0位:ECCx-ECC结果,ECC结果有效位ECCPS[2:0]页大小(字节)ECC有效位ECCPS[2:1]页大小(字节)ECC有效位0256ECC[21:0]112048ECC[27:0]1512ECC[23:0]1004096ECC[29:0]101024ECC[25:0]1018192ECC[31:0]SDIO相关寄存器SDIO_POWER(SDIO电源控制寄存器)31302928272625242322212019181716保留1514131211109876543210保留PWRCTRL[1:0]1-0位:PWRCTRL电源控制位,这些位用于定义卡时钟的当前功能状态,定义:00(电源关闭,卡的时钟停止),01(保留),10(保留的上电状态),11(上电状态,卡的时钟开启)注意: 写数据后的7个HCLK时钟周期内,不能写入这个寄存器SDIO_CLKCR(SDIO时钟控制寄存器)31302928272625242322212019181716保留1514131211109876543210保留HWFC_ENNEGEDGEWIDBUSBYPASSPWRSAVCLKENCLKDIV14位:HWFC_EN硬件流控制使能,当使能硬件流控制后,关于TXFIFOE和RXFIFOF中断信号的意义请参考20.9.11节的SDIO状态寄存器的定义, 定义:0(关闭硬件流控制),1(使能)13位:NEGEDGE-SDIO_CK相位选择位,0(在主时钟SDIOCLK的上升沿产生SDIO_CK),1(在主时钟SDIOCLK的下降沿产生SDIO_CK)12-11位:WIDBUS宽总线模式使能位,定义:00(默认总线模式,使用SDIO_D0),01(4位总线模式,使用SDIO_D[3:0]),10(8位总线模式,使用SDIO_D[7:0])10位:BYPASS旁路时钟分频器,定义:0(关闭旁路:驱动SDIO_CK输出信号之前,依据CLKDIV数值对SDIOCLK分频)1(使能旁路:SDIOCLK直接驱动SDIO_CK输出信号)9位:PWRSAV省电配置位,为了省电,当总线为空闲时,设置PWRSAV位可以关闭SDIO_CK时钟输出,定义:0(始终输出SDIO_CK),1(仅在有总线活动时才输出SDIO_CK)8位:CLKEN时钟使能位,定义:0(SDIO_CK关闭),1(SDIO_CK使能)7-0位:CLKDIV时钟分频系数,这个域定义了输入时钟(SDIOCLK)与输出时钟(SDIO_CK)间的分频系数:SDIO_CK频率 = SDIOCLK/[CLKDIV + 2]。 注意:1当SD/SDIO卡或多媒体卡在识别模式,SDIO_CK的频率必须低于400kHz。2 当所有卡都被赋予了相应的地址后,时钟频率可以改变到卡总线允许的最大频率 3 写数据后的7个HCLK时钟周期内不能写入这个寄存器。对于SD I/O卡,在读等待期间可以停止SDIO_CK,此时SDIO_CLKCR寄存器不控制SDIO_CK。SDIO_ARG(SDIO参数寄存器)2423222120191817CMDARG[31:16]151413121110987654321CMDARG[15:0]31-0位:CMDARG命令参数,命令参数是发送到卡中命令的一部分,如果一个命令包含一个参数,必须在写命令到命令寄存器之前加载这个寄存器。SDIO_CMD(SDIO命令寄存器)SDIO_CMD寄存器包含命令索引和命令类型位。命令索引是作为命令的一部分发送到卡中。命令类型位控制命令通道状态机(CPSM)313029282726252423222120191817保留151413121110987654321保留ATACMDnIENENCMDcomSDIOSuspCPSMENWAITPENDWAITINTWAITRESP[1:0]CMDINDEX[5:0]14位:ATACMD(CE-ATA命令)如果设置该位,CPSM转至CMD6113位:nIEN不使能中断,如果未设置该位,则使能CE-ATA设备的中断12位:ENCMDcompl使能CMD完成,如果设置该位,则使能命令完成信号11位:SDIOSuspend-SD I/O暂停命令,如果设置该位,则将要发送的命令是一个暂停命令(只能用于SDIO卡)10位:CPSMEN命令通道状态机(CPSM)使能位,如果设置该位,则使能CPSM。9位:WAITPEND-CPSM等待数据传输结束(CmdPend内部信号),如果设置该位,则CPSM在开始发送一个命令之前等待数据传输结束8位:WAITINT-CPSM等待中断请求,如果设置该位,则CPSM关闭命令超时控制并等待中断请求7-6位:WAITRESP等待响应位,这2位指示CPSM是否需要等待响应,如果需要等待响应,则指示响应类型,定义:00(无响应,期待CMDSENT标志) 01(短响应,期待CMDREND或CCRCFAIL标志),10(无响应,期待CMDSENT标志),11(长响应,期待CMDREND或CCRCFAIL标志)5-0位:CMDINDEX命令索引,命令索引是作为命令的一部分发送到卡中 注意: 1 写数据后的7个HCLK时钟周期内不能写入这个寄存器。 2 多媒体卡可以发送2种响应:48位长的短响应,或136位长的长响应。SD卡和SD I/O卡只能发送短响应,参数可以根据响应的类型而变化, 软件将根据发送的命令区分响应的类型。CE-ATA设备只发送短响应。SDIO_RESPCMD(SDIO命令响应寄存器)313029282726252423222120191817保留151413121110987654321保留RESPCMD[5:0]5-0位:RESPCMD响应的命令索引,只读位,包含最后收到的命令响应中的命令索引SDIO_RESPx(SDIO响应1..4寄存器)313029282726252423222120191817CARDSTATUSx[31:16]151413121110987654321CARDSTATUSx[15:0]31-0位:CARDSTATUSx:根据响应状态,卡的状态长度是32位或127位,总是先收到卡状态的最高位,SDIO_RESP3寄存器的最低位始终为0。寄存器短响应长响应寄存器短响应长响应SDIO_RESP1卡状态[31:0]卡状态[127:96]SDIO_RESP2不用卡状态[95:64]SDIO_RESP2不用卡状态[63:32]SDIO_RESP2不用卡状态[31:1]SDIO数据定时器寄存器(SDIO_DTIMER)SDIO_DTIMER寄存器包含以卡总线时钟周期为单位的数据超时时间。一个计数器从SDIO_DTIMER寄存器加载数值,并在数据通道状态机(DPSM)进入Wait_R或繁忙状态时31302928272625160160160160进行递减计数,当DPSM处在这些状态时,如果计数器减为0,则设置超时标志。31302928272625242322212019181716DATATIME[31:16]1514131211109876543210DATATIME[15:0]31-0位:DATATIME数据超时时间,以卡总线时钟周期为单位的数据超时时间,注意:在写入数据控制寄存器进行数据传输之前,须先写数据定时器和数据长度寄存器SDIO_DLEN(SDIO数据长度寄存器)31302928272625242322212019181716保留DATALENGTH[24:16]1514131211109876543210DATALENGTH[15:0]24-0位:DATALENGTH数据长度,要传输的数据字节数目,注意 对于块数据传输,数据长度寄存器中的数值必须是数据块长度(见SDIO_DCTRL)的倍数。 在写入数据控制寄存器进行数据传输之前,必须先写入数据定时器寄存器和数据长度寄存器SDIO_DCTRL(SDIO数据控制寄存器)31302928272625242322212019181716保留1514131211109876543210保留SDIOENRWMODRWSTOPRWSTARTDBLOCKSIZEDMAENDTMODEDTDIRDTEN11位:SDIOEN-SD I/O使能功能,如果设置了该位,则DPSM执行SD I/O卡特定的操作10位:RWMOD读等待模式,定义:0(停止SDIO_CK控制读等待),1(使用SDIO_D2控制读等待)9位:RWSTOP读等待停止,定义:0(如果设置了RWSTART,执行读等待)1(如果设置了RWSTART,停止读等待)8位:RWSTART读等待开始,设置该位开始读等待操作7-4位:DBLOCKSIZE数据块长度,当选择了块数据传输模式,该域定义数据块长度:0000(1字节)0001(2字节)0010(4字节)0011(8字节)0100(16字节) 0101(32)0110(64)0111(128)1000(256)1001(512)1010(1024)1011(2048)1100(4096)1101(8192)1110(16384)1111(保留)3位:DMAEN-DMA使能位,定义:0(关闭DMA)1(使能DMA)2位:DTMODE数据传输模式,定义:0(块数据传输)1(流数据传输)1位:DTDIR数据传输方向,定义:0(控制器至卡)1(卡至控制器)0位:DTEN数据传输使能位,如果设置该位为1,则开始数据传输。根据DTSIR方向位,DPSM进入Wait_S或Wait_R状态,如果在传输的一开始就设置了RWSTART位, 则DPSM进入读等待状态。不需要在数据传输结束后清除使能位,但必须更改SDIO_DCTRL以允许新的数据传输注意 写数据后的7个HCLK时钟周期内不能写入这个寄存器SDIO数据计数器寄存器(SDIO_DCOUNT)31302928272625242322212019181716保留DATACOUNT[24:16]1514131211109876543210DATACOUNT[15:0]24-0位:DATACOUNT:数据计数数值,读这个寄存器时返回待传输的数据字节数,写这个寄存器无作用。注意 只能在数据传输结束时读这个寄存器。SDIO_STA(SDIO状态寄存器)31302928272625242322212019181716保留CEATAENDSDIOITRXDVALTXDVALRXFIFOETXFIFOERXFIFOFTXFIFOF1514131211109876543210RXFIFOHFTXFIFOHERXACTTXACTCMDACTDBCKENDSTBITERRDATAENDCMDSENTCMDRENDRXOVERRTXUNDERRDTIMEOUTCTIMEOUTDCRCFAILCCRCFAIL23位:CEATAEND在CMD61接收到CE-ATA命令完成信号22位:SDIOIT收到SDIO中断21位:RXDVAL在接收FIFO中的数据可用20位:TXDVAL在发送FIFO中的数据可用19位:RXFIFOE接收FIFO空18位:TXFIFOE发送FIFO空,若使用了硬件流控制,当FIFO包含2个字时,TXFIFOE信号变为有效17位:RXFIFOF接收FIFO满,若使用了硬件流控制,当FIFO包含2个字时,TXFIFOE信号变为有效16位:TXFIFOF发送FIFO满15位:RXFIFOHF接收FIFO半满,FIFO中至少还有8个字14位:TXFIFOHE发送FIFO半空,FIFO中至少还可以写入8个字13位:RXACT正在接收数据12位:TXACT正在发送数据11位:CMDACT正在传输命令10位:DBCKEND已发送/接收数据块(CRC检测成功)9位:STBITERR在宽总线模式,没有在所有数据信号上检测到起始位8位:DATAEND数据结束(数据计数器,SDIO_DCOUNT = 0)7位:CMDSENT命令已发送(不需要响应)6位:CMDREND已接收到响应(CRC检测成功)5位:RXOVERR接收FIFO上溢错误4位:TXUNDERR发送FIFO下溢错误3位:DTIMEOUT数据超时2位:CTIMEOUT命令响应超时,命令超时时间是一个固定的值,为64个SDIO_CK时钟周期1位:DCRCFAIL已发送/接收数据块(CRC检测失败)0位:CCRCFAIL已收到命令响应(CRC检测失败)SDIO_ICR(SDIO清除中断寄存器)31302928272625242322212019181716保留CEATAENDCSDIOITC保留1514131211109876543210保留DBCKENDCSTBITERRCDATAENDCCMDSENTCCMDRENDCRXOVERRCTXUNDERRCDTIMEOUTCCTIMEOUTDCRCFAILCCCRCFAILC23位:CEATAENDC-CEATAEND标志清除位,软件设置该位以清除CEATAEND标志22位:SDIOITC-SDIOIT标志清除位,软件设置该位以清除SDIOIT标志10位:DBCKENDC-DBCKEND标志清除位,软件设置该位以清除DBCKEND标志9位:STBITERRC-STBITERR标志清除位,软件设置该位以清除STBITERR标志8位:DATAENDC-DATAEND标志清除位,软件设置该位以清除DATAEND标志7位:CMDSENTC-CMDSENT标志清除位,软件设置该位以清除CMDSENT标志6位:CMDRENDC-CMDREND标志清除位,软件设置该位以清除CMDREND标志5位:RXOVERRC-RXOVERR标志清除位,软件设置该位以清除RXOVERR标志4位:TXUNDERRC-TXUNDERR标志清除位,软件设置该位以清除TXUNDERR标志3位:DTIMEOUTC-DTIMEOUT标志清除位,软件设置该位以清除DTIMEOUT标志2位:CTIMEOUT-CTIMEOUT标志清除位,软件设置该位以清除CTIMEOUT标志1位:DCRCFAILC-DCRCFAIL标志清除位,软件设置该位以清除DCRCFAIL标志0位:CCRCFAILC-CCRCFAIL标志清除位,软件设置该位以清除CCRCFAIL标志SDIO_MASK(SDIO中断屏蔽寄存器)31302928272625242322212019181716保留CEATAENDSDIOITIERXDVALIETXDVALIERXFIFOETXFIFOERXFIFOFTXFIFOF1514131211109876543210RXFIFOHFTXFIFOHERXACTIETXACTIECMDACTIEDBCKENDSTBITERRDATAENDCMDSENTIECMDRENDRXOVERRTXUNDERRDTIMEOUTCTIMEOUTDCRCFAILCCRCFAIL23位:CEATAENDIE允许接收到CE-ATA命令完成信号产生中断,由软件设置/清除该位,允许/关闭在收到CE-ATA命令完成信号产生中断功能,定义: 0(收到CE-ATA命令完成信号时不产生中断),1(收到CE-ATA命令完成信号时产生中断)22位:SDIOITIE允许SDIO模式中断已接收中断(手动),定义:0(SDIO模式中断已接收不产生中断),1(SDIO模式中断已接收产生中断)21位:RXDVALIE接收FIFO中的数据有效产生中断(手动),定义:0(接收FIFO中的数据有效不产生中断),1(接收FIFO中的数据有效产生中断)20位:TXDVALIE发送FIFO中的数据有效产生中断,(手动),定义:0(发送FIFO中的数据有效不产生中断),1(发送FIFO中的数据有效产生中断)19位:RXFIFOEIE接收FIFO空产生中断,(手动),定义:0(接收FIFO空不产生中断),1(接收FIFO空产生中断)18位:TXFIFOEIE发送FIFO空产生中断,(手动),定义:0(发送FIFO空不产生中断),1(发送FIFO空产生中断)17位:RXFIFOFIE接收FIFO满产生中断,(手动),定义:0(接收FIFO满不产生中断),1(接收FIFO满产生中断)16位:TXFIFOFIE发送FIFO满产生中断,(手动),定义:0(发送FIFO满不产生中断),1(发送FIFO满产生中断)15位:RXFIFOHFIE接收FIFO半满产生中断,(手动),定义:0(接收FIFO半满不产生中断),1(接收FIFO半满产生中断)14位:TXFIFOHE发送FIFO半空产生中断,(手动),定义:0(发送FIFO半空不产生中断),1(发送FIFO半空产生中断)13位:RXACTIE正在接收数据产生中断,(手动),定义:0(正在接收数据不产生中断),1(正在接收数据产生中断)12位:TXACTIE正在发送数据产生中断,(手动),定义:0(正在发送数据不产生中断),1(正在发送数据产生中断)11位:CMDACTIE正在传输命令产生中断,(手动),定义:0(正在传输命令不产生中断),1(正在传输命令产生中断)10位:DBCKENDIE数据块传输结束产生中断,(手动),定义:0(数据块传输结束不产生中断),1(数据块传输结束产生中断)9位:STBITERRIE起始位错误产生中断,(手动),定义:0(起始位错误不产生中断),1(起始位错误产生中断)8位:DATAENDIE数据传输结束产生中断,(手动),定义:0(数据传输结束不产生中断),1(数据传输结束产生中断)7位:CMDSENTIE命令已发送产生中断,(手动),定义:0(命令已发送不产生中断),1(命令已发送产生中断)6位:CMDRENDIE接收到响应产生中断,(手动),定义:0(接收到响应不产生中断),1(接收到响应产生中断)5位:RXOVERRIE接收FIFO上溢错误产生中断,(手动),定义:0(接收FIFO上溢错误不产生中断),1(接收FIFO上溢错误产生中断)4位:TXUNDERRIE发送FIFO下溢错误产生中断,(手动),定义:0(发送FIFO下溢错误不产生中断),1(接收FIFO上溢错误产生中断)3位:DTIMEOUTIE数据超时产生中断,(手动),定义:0(数据超时不产生中断),1(数据超时产生中断)2位:CTIMEOUTIE命令超时产生中断,(手动),定义:0(命令超时不产生中断),1(命令超时产生中断)1位:DCRCFAILIE数据块CRC检测失败产生中断,(手动),定义:0(数据块CRC检测失败不产生中断),1(数据块CRC检测失败产生中断)0位:CCRCFAILIE命令CRC检测失败产生中断,(手动),定义:0(命令CRC检测失败不产生中断),1(命令CRC检测失败产生中断)SDIO_FIFOCNT(SDIO FIFO计数器寄存器)31302928272625242322212019181716FIFOCOUNT[23:16]1514131211109876543210FIFOCOUNT[15:0]23-0位:FIFOCOUNT将要写入FIFO或将要从FIFO读出数据字的数目,SDIO_FIFO(SDIO数据FIFO寄存器)31302928272625242322212019181716FIFODATA[31:16]1514131211109876543210FIFODATA[15:0]31-0位:FIFODATA接收或发送FIFO数据,FIFO数据占据32个32位的字,地址为:(SDIO基址 + 0x80) 至 (SDIO基址 + 0xFC)USB相关寄存器USB控制寄存器(USB_CNTR)1514131211109876543210CTRMPMAOVRMERRMWKUPMSUSPMRESETMSOFMESOFM保留RESUMESFUSPLPMODEPDMNPRES15位:CTRM正确传输(CTR)中断屏蔽位,定义:0(正确传输(CTR)中断禁止),1(正确传输(CTR)中断使能,在中断寄存器的相应位被置1时产生中断)14位:PMAOVRM分组缓冲区溢出中断屏蔽位,定义:0(PMAOVR中断禁止),1(PMAOVR中断使能,在中断寄存器的相应位被置1时产生中断)13位:ERRM出错中断屏蔽位,定义:0(出错中断禁止),1(出错中断使能,在中断寄存器的相应位被置1时产生中断)12位:WKUPM唤醒中断屏蔽位,定义:0(唤醒中断禁止),1(唤醒中断使能,在中断寄存器的相应位被置1时产生中断)11位:SUSPM挂起中断屏蔽位,定义:0(挂起(SUSP)中断禁止),1(挂起(SUSP)中断使能,在中断寄存器的相应位被置1时产生中断)10位:RESETM-USB复位中断屏蔽位,定义:0(USB RESET中断禁止),1(USB RESET中断使能,在中断寄存器的相应位被置1时产生中断)9位:SOFM帧首中断屏蔽位,定义:0(SOF中断禁止),1(SOF中断使能,在中断寄存器的相应位被置1时产生中断)8位:ESOFM期望帧首中断屏蔽位,定义:0(ESOF中断禁止),1(ESOF中断使能,在中断寄存器的相应位被置1时产生中断)4位:RESUME唤醒请求,定义:设置此位将向PC主机发送唤醒请求。根据USB协议,如果此位在1ms到15ms内保持有效,主机将对USB模块实行唤醒操作3位:FSUSP强制挂起,当USB总线上保持3ms没有数据通信时,SUSP中断会被触发,此时软件必需设置此位,定义:0(无效)1(进入挂起模式,USB模拟收发器的 时钟和静态功耗仍然保持。如果需要进入低功耗状态(总线供电类的设备),应用程序需要先置位FSUSP再置位LP_MODE2位:LP_MODE低功耗模式,此模式用于在USB挂起状态下降低功耗。在此模式下,除了外接上拉电阻的供电,其他的静态功耗都被关闭,系统时钟将会停止或者降低到 一定的频率来减少耗电。USB总线上的活动(唤醒事件)将会复位此位(软件也可以复位此位)。定义:0(非低功耗模式),1(低功耗模式)1位:PDWN断电模式,此模式用于彻底关闭USB模块。当此位被置位时,不能使用USB模块,定义:0(退出断电模式),1(进入断电模式)0位:FRES强制USB复位,定义:0(清除USB复位信号),1(对USB模块强制复位,类似于USB总线上的复位信号。USB模块将一直保持在复位状态下直到软件清除此位。 如果USB复位中断被使能,将产生一个复位中断)USB_ISTR(USB中断状态寄存器)1514131211109876543210CTRPMAOVRERRWKUPSUSPRESETSOFESOF保留DIREP_ID[3:0]15位:CTR正确的传输,此位在端点正确完成一次数据传输后由硬件置位。应用程序可以通过DIR和EP_ID位来识别是哪个端点完成了正确的数据传输。此位只读14位:PMAOVR分组缓冲区溢出,此位在微控制器长时间没有响应一个访问USB分组缓冲区请求时由硬件置位。USB模块通常在以下情况时置位该位:在接收过程中一个 ACK握手分组没有被发送,或者在发送过程中发生了比特填充错误,在以上两种情况下主机都会要求数据重传。在正常的数据传输中不会产生PMAOVR中断。由于 失败的传输都将由主机发起重传,应用程序就可以在这个中断的服务程序中加速设备的其他操作,并准备重传。但这个中断不会在同步传输中产生(同步传输 不支持重传)因此数据可能会丢失。此位应用程序可读可写,但只有写0有效,写1无效。13位:ERR出错,在下列错误发生时硬件会置位此位,NANS:无应答。主机的应答超时,CRC:循环冗余校验码错误。数据或令牌分组中的CRC校验出错 BST:位填充错误。PID,数据或CRC中检测出位填充错误。FVIO:帧格式错误。收到非标准帧(如EOP出现在错误的时刻,错误的令牌等)。 USB应用程序通常可以忽略这些错误,因为USB模块和主机在发生错误时都会启动重传机制。此位产生的中断可以用于应用程序的开发阶段, 可以用来监测USB总线的传输质量,标识用户可能发生的错误(连接线松,环境干扰严重,USB线损坏等)。 此位应用程序可读可写,但只有写0有效,写1无效。12位:WKUP唤醒请求,当USB模块处于挂起状态时,如果检测到唤醒信号,此位将由硬件置位。此时CTLR寄存器的LP_MODE位将被清零,同时USB_WAKEUP被激活, 通知设备的其他部分(如唤醒单元)将开始唤醒过程。此位应用程序可读可写,但只有写0有效,写1无效。11位:SUSP挂起模块请求,此位在USB线上超过3ms没有信号传输时由硬件置位,用以指示一个来自USB总线的挂起请求。USB复位后硬件立即使能对挂起信号的检测, 但在挂起模式下(FSUSP=1)硬件不会再检测挂起信号直到唤醒过程结束。此位应用程序可读可写,但只有写0有效,写1无效。10位:RESET-USB复位请求,此位在USB模块检测到USB复位信号输入时由硬件置位。此时USB模块将复位内部协议状态机,并在中断使能下触发复位中断来响应复位信号。 USB模块的发送和接收部分将被禁止,直到此位被清除。所有的配置寄存器不会被复位,除非应用程序对他们清零。这用来保证在复位后USB传输还可以立即 正确执行。但设备的地址和端点寄存器会被USB复位所复位。此位应用程序可读可写,但只有写0有效,写1无效。9位:SOF帧首标志,此位在USB模块检测到总线上的SOF分组时由硬件置位,标志一个新的USB帧的开始。中断服务程序可以通过检测SOF事件来完成与主机的1ms同步 并正确读出寄存器在收到SOF分组时的更新内容(此功能在同步传输时非常有意义)。此位应用程序可读可写,但只有写0有效,写1无效。8位:ESOF期望帧首标识位,此位在USB模块未收到期望的SOF分组时由硬件置位。主机应该每毫秒都发送SOF分组,但如果USB模块没有收到,挂起定时器将触发此中断。如果连4位:DIR传输方向,此位在完成数据传输产生中断后由硬件根据传输方向写入。如果DIR=0,相应端点的CTR_TX位被置位,标志一个IN分组(数据从USB模块传输到 PC主机)的传输完成,如果DIR=1,相应端点的CTR_RX位被置位,标志一个OUT分组(数据从PC主机传输到USB模块)的传输完成。如果CTR_TX位同时也被置位 就标志同时存在挂起的OUT分组和IN分组。应用程序可以利用该信息访问USB_EPnR位对应的操作,它表示挂起中断传输方向的信息。该位为只读3-0位:EP_ID[3:0]端点ID,此位在USB模块完成数据传输产生中断后由硬件根据请求中断的端点号写入。如果同时有多个端点的请求中断,硬件写入优先级最高的端点号。 端点的优先级按以下方法定义:同步端点和双缓冲批量端点具有高优先级,其他的端点为低优先级。如果多个同优先级的端点请求中断,则根据端点号 来确定优先级,即端点0具有最高优先级,端点号越小,优先级越高。应用程序可以通过上述的优先级策略顺序处理端点的中断请求。该位为只读。USB帧编号寄存器(USB_FNR)1514131211109876543210RXDPRXDMLCKLSOF[1:0]FN[10:0]15位:RXDP(D+状态位),此位用于观察USB D+数据线的状态,可在挂起状态下检测唤醒条件的出现14位:RXDM(D-状态位),此位用于观察USB D-数据线的状态,可在挂起状态下检测唤醒条件的出现。13位:LCK锁定位,USB模块在复位或唤醒序列结束后会检测SOF分组,如果连续检测到至少2个SOF分组,则硬件会置位此位。此位一旦锁定,帧计数器将停止计数, 一直等到USB模块复位或总线挂起时再恢复计数12位:LSOF[1:0]帧首丢失标志位,当ESOF事件发生时,硬件会将丢失的SOF分组的数目写入此位。如果再次收到SOF分组,引脚会清除此位10-0位:此部分记录了最新收到的SOF分组中的11位帧编号。主机每发送一个帧,帧编号都会自加,这对于同步传输非常有意义。此部分发生SOF中断时更新USB_DADDR(USB设备地址寄存器)1514131211109876543210保留EFADD[6:0]7位:EF-USB模块使能位,此位在需要使能USB模块时由应用程序置位。如果此位为0,USB模块将停止工作,忽略所有寄存器的设置,不响应任何USB通信。6-0位:ADD[6:0]设备地址,此位记录了USB主机在枚举过程中为USB设备分配的地址值。该地址值和端点地址(EA)必需和USB令牌分组中的地址信息匹配, 才能在指定的端点进行正确的USB传输USB_BTABLE(USB分组缓冲区描述表地址寄存器)1514131211109876543210BTABLE[15:3]保留15-3位:BTABLE缓冲表,此位记录分组缓冲区描述表的起始地址。分组缓冲区描述表用来指示每个端点的分组缓冲区地址和大小,按8字节对齐(即最低3位为000)。 每次传输开始时,USB模块读取相应端点所对应的分组缓冲区描述表获得缓冲区地址和大小信息USB_EPnR(USB 端点n寄存器), n=[0..7]1514131211109876543210CTR_RXDTOG_RXSTAT_RX[1:0]SETUPEPTYPE[1:0]EP_KINDCTR_TXDTOG_TXSTAT_TX[1:0]EA[3:0]15位:CTR_RX正确接收标志位(可读可写,写0有效,写1无效)。此位在正确接收到OUT或SETUP分组时由硬件置位,应用程序只能对此位清零。如果CTRM位已置位, 相应的中断会产生。收到的是OUT分组还是SETUP分组可以通过下面描述的SETUP位确定。以NAK或STALL结束的分组和出错的传输不会导致此位置位, 因为没有真正传输数据14位:DTOG_RX用于数据接收的数据翻转位(可读可写,写0有效,写1无效),对于非同步端点,此位由硬件设置,用于标记希望接收的下一个数据分组的Toggle位 (0=DATA0,1=DATA1)。在接收到PID(分组ID)正确的数据分组之后,USB模块发送ACK握手分组,并翻转此位。对于控制端点,硬件在收到SETUP分组后清除此位。 对于双缓冲端点,此位还用于支持双缓冲区的交换。对于同步端点,由于仅发送DATA0,因此此位仅用于支持双缓冲区的交换,而不需进行翻转。 同步传输不需要握手分组,因此硬件在收到数据分组后立即设置此位。应用程序可以对此位进行初始化(对于非控制端点,初始化是必需的), 或者翻转此位用于特殊用途13-12位:STAT_RX[1:0]用于数据接收的状态位,此位用于指示端点当前的状态,表157列出了端点的所有状态。当一次正确的OUT或SETUP数据传输完成后(CTR_RX=1), 硬件会自动设置此位为NAK状态,使应用程序有足够的时间在处理完当前传输的数据后,响应下一个数据分组。 对于双缓冲批量端点,由于使用特殊的传输流量控制策略,因此根据使用的缓冲区状态控制传输状态。对于同步端点, 由于端点状态只能是有效或禁用,因此硬件不会在正确的传输之后设置此位。如果应用程序将此位设为STALL或者NAK,USB模块响应的操作是未定义的11位:SETUP-SETUP分组传输完成标志位,(只读),此位在USB模块收到一个正确的SETUP分组后由硬件置位,只有控制端点才使用此位。在接收完成后(CTR_RX=1), 应用程序需要检测此位以判断完成的传输是否是SETUP分组。为了防止中断服务程序在处理SETUP分组时下一个令牌分组修改了此位,只有CTR_RX为0时, 此位才可以被修改,CTR_RX为1时不能修改。10-9位:EP_TPYE[1:0]端点类型位,此位用于指示端点当前的类型,所有的端点类型都在表158中列出。所有的USB设备都必需包含一个地址为0的控制端点,如果需要 可以有其他地址的控制端点。只有控制端点才会有SETUP传输,其他类型的端点无视此类传输。SETUP传输不能以NAK或STALL分组响应,如果控制端点在收到 SETUP分组时处于NAK状态,USB模块将不响应分组,就会出现接收错误。如果控制端点处于STALL状态,SETUP分组会被正确接收,数据会被正确传输,并产生 一个正确传输完成的中断。控制端点的OUT分组安装普通端点的方式处理。批量端点和中断端点的处理方式非常类似,仅在对EP_KIND位的处理上有差别。8位:EP_KIND端点特殊类型位,此位的需要和EP_TYPE位配合使用,具体的定义请参考表159。DBL_BUF:应用程序设置此位能使能批量端点的双缓冲功能。 STATUS_OUT:应用程序设置此位表示USB设备期望主机发送一个状态数据分组,此时,设备对于任何长度不为0的数据分组都响应STALL分组。 此功能仅用于控制端点,有利于提供应用程序对于协议层错误的检测。如果STATUS_OUT位被清除,OUT分组可以包含任意长度的数据。7位:CTR_TX正确发送标志位,此位由硬件在一个正确的IN分组传输完成后置位。如果CTRM位已被置位,会产生相应的中断。应用程序需要在处理完该事件后清除此位。 在IN分组结束时,如果主机响应NAK或STALL则此位不会被置位,因为数据传输没有成功。此位应用程序可读可写,但写0有效,写1无效。6位:DTOG_RX发送数据翻转位,对于非同步端点,此位用于指示下一个要传输的数据分组的Toggle位(0=DATA0,1=DATA1)。在一个成功传输的数据分组后, 如果USB模块接收到主机发送的ACK分组,就会翻转此位。对于控制端点,USB模块会在收到正确的SETUP PID后置位此位。对于双缓冲端点,此位还可用于支持 分组缓冲区交换。对于同步端点,由于只传送DATA0,因此该位只用于支持分组缓冲区交换。由于同步传输不需要握手分组,因此硬件在接收到数据 分组后即设置该位。应用程序可以初始化该位(对于非控制端点,初始化此位时必需的),也可以设置该位用于特殊用途。可读写,写1翻转写0无效5-4位:STAT_TX[1:0]用于发送数据的状态位,此位用于标识端点的当前状态,表160列出了所有的状态。应用程序可以翻转这些位来初始化状态信息。在正确 完成一次IN分组的传输后(CTR_TX=1),硬件会自动设置此位为NAK状态,保证应用程序有足够的时间准备好数据响应后续的数据传输。对于双缓冲批量端点, 由于使用特殊的传输流量控制策略,是根据缓冲区的状态控制传输的状态的。对于同步端点,由于端点的状态只能是有效或禁用,因此硬件不会在数据传输结束 时改变端点的状态。如果应用程序将此位设为STALL或者NAK,则USB模块后续的操作是未定义的。此位应用程序可读可写,但写0无效,写1翻转此位。3-0位:EA[3:0]端点地址,应用程序必需设置此4位,在使能一个端点前为它定义一个地址。USB_ADDRn_TX(发送缓冲区地址寄存器 n)1514131211109876543210ADDRn_TX[15:1]15-1位:ADDRn_TX[15:1]发送缓冲区地址,此位记录了收到下一个IN分组时,需要发送的数据所在的缓冲区起始地址。0位:因为分组缓冲区地址必须按字对齐,所以此位必须为‘0‘USB_COUNTn_TX(发送数据字节数寄存器 n)1514131211109876543210COUNTn_TX[9:0]9-0位:COUNTn_TX[9:0]发送数据字节数,此位记录了收到下一个IN分组时要传输的数据字节数 注: 双缓冲区和同步IN端点有两个USB_COUNTn_TX寄存器:分别为USB_COUNTn_TX_1和USB_COUNTn_TX_0,内容如下:31302928272625242322212019181716保留COUNTn_TX_1[9:0]1514131211109876543210保留COUNTn_TX_0[9:0]USB_ADDRn_RX(接收缓冲区地址寄存器 n)987654321ADDRn_RX[15:1]15-1位:ADDRn_RX[15:1]接收缓冲区地址,此位记录了收到下一个OUT或者SETUP分组时,用于保存数据的缓冲区起始地址。0位:因为分组缓冲区的地址按字对齐,所以此位必需为’0’。USB_COUNTn_RX(接收数据字节数寄存器 n)151413121110987654321BL_SIZENUM_BLOCK[4:0]COUNTn_RX[9:0]15位:BL_SIZE存储区块的大小,此位用于定义决定缓冲区大小的存储区块的大小。如果BL_SIZE=0,存储区块的大小为2字节,因此能分配的分组缓冲区 的大小范围为2-62个字节。如果BL_SIZE=1,存储区块的大小为32字节,因此能分配的分组缓冲区的大小范围为32-512字节,符合USB协议定 义的最大分组长度限制14-10位:NUM_BLOCK[4:0]存储区块的数目,此位用以记录分配的存储区块的数目,从而决定最终使用的分组缓冲区的大小。9-0位:COUNTn_RX[9:0]接收到的字节数,此位由USB模块写入,用以记录端点收到的最新的OUT或SETUP分组的实际字节数注: 双缓冲区和同步IN端点有两个USB_COUNTn_RX寄存器:分别为USB_COUNTn_RX_1和USB_COUNTn_TX_0,内容如下:313029282726252423222120191817BLSIZE_1NUM_BLOCK_1[4:0]COUNTn_RX_1[9:0]151413121110987654321BLSIZE_0NUM_BLOCK_0[4:0]COUNTn_RX_0[9:0]15141312111000160bxCAN相关寄存器CAN_MCR (CAN主控制寄存器)31302928272625242322212019181716保留DBF1514131211109876543210RESET保留TTCMABOMAWUMNARTRFLMTXFPSLEEPINRQ16位:DBF调试冻结,定义:0(在调试时,CAN照常工作),1(在调试时,冻结CAN的接收/发送。仍然可以正常地读写和控制接收FIFO)15位:RESET-bxCAN 软件复位,定义:0(本外设正常工作),1(对bxCAN进行强行复位,复位后bxCAN进入睡眠模式(FMP位和CAN_MCR寄存器被初始化为其复位值)。 此后硬件自动对该位清’0’)7位:TTCM时间触发通信模式,定义:0(禁止时间触发通信模式),1(允许时间触发通信模式)6位:ABOM自动离线(Bus-Off)管理,该位决定CAN硬件在什么条件下可以退出离线状态,定义:0(:离线状态的退出过程是,软件对CAN_MCR寄存器的INRQ位进行置’1’ 随后清’0’后,一旦硬件检测到128次11位连续的隐性位,则退出离线状态;), 1(一旦硬件检测到128次11位连续的隐性位,则自动退出离线状态)5位:AWUM自动唤醒模式,该位决定CAN处在睡眠模式时由硬件还是软件唤醒,定义:0(睡眠模式通过清除CAN_MCR寄存器的SLEEP位,由软件唤醒;) 1(睡眠模式通过检测CAN报文,由硬件自动唤醒。唤醒的同时,硬件自动对CAN_MSR寄存器的SLEEP和SLAK位清’0’)4位:NART禁止报文自动重传,定义:0(按照CAN标准,CAN硬件在发送报文失败时会一直自动重传直到发送成功;),1(CAN报文只被发送1次, 不管发送的结果如何(成功、出错或仲裁丢失))3位:RFLM接收FIFO锁定模式,定义:0(在接收溢出时FIFO未被锁定,当接收FIFO的报文未被读出,下一个收到的报文会覆盖原有的报文;) 1(在接收溢出时FIFO被锁定,当接收FIFO的报文未被读出,下一个收到的报文会被丢弃。)2位:TXFP发送FIFO优先级,当有多个报文同时在等待发送时,该位决定这些报文的发送顺序,定义:0(优先级由报文的标识符来决定;), 1(优先级由发送请求的顺序来决定。)1位:SLEEP睡眠模式请求,软件对该位置’1’可以请求CAN进入睡眠模式,一旦当前的CAN活动(发送或接收报文)结束,CAN就进入睡眠。 软件对该位清’0’使CAN退出睡眠,当设置了AWUM位且在CAN Rx信号中检测出SOF位时,硬件对该位清’0’。在复位后该位被置’1’,即CAN在复位后处于睡眠。0位:INRQ初始化请求,软件对该位清’0’可使CAN从初始化模式进入正常工作模式:当CAN在接收引脚检测到连续的11个隐性位后,CAN就达到同步, 并为接收和发送数据作好准备了。为此,硬件相应地对CAN_MSR寄存器的INAK位清’0’。软件对该位置1可使CAN从正常工作模式进入初始化模式: 一旦当前的CAN活动(发送或接收)结束,CAN就进入初始化模式。相应地,硬件对CAN_MSR寄存器的INAK位置’1’。CAN_MSR (CAN主状态寄存器)31302928272625242322212019181716保留1514131211109876543210保留RXSAMPRXMTXM保留SLAKIWKUIERRISLAKINAK11位:RX-CAN接收电平,该位反映CAN接收引脚(CAN_RX)的实际电平。10位:SAMP上次采样值,CAN接收引脚的上次采样值(对应于当前接收位的值)。9位:RXM接收模式,该位为’1’表示CAN当前为接收器。8位:TXM发送模式,该位为’1’表示CAN当前为发送器。4位:SLAKI:睡眠确认中断,当SLKIE=1,一旦CAN进入睡眠模式硬件就对该位置’1,紧接着相应的中断被触发。当设置该位为’1’时,如果设置了CAN_IER寄存器中 的SLKIE位,将产生一个状态改变中断。软件可对该位清’0’,当SLAK位被清’0’时硬件也对该位清’0’。注: 当SLKIE=0, 不应该查询该位, 而应该查询SLAK位来获知睡眠状态。注: 当SLKIE=0, 不应该查询该位,而应该查询SLAK位来获知睡眠状态。3位:WKUI唤醒中断挂号,当CAN处于睡眠状态,一旦检测到帧起始位(SOF),硬件置1;并且如果CAN_IER寄存器的WKUIE位为’1’,则产生一个状态改变中断。软件清0。2位:ERRI出错中断挂号,当检测到错误时,CAN_ESR寄存器的某位被置’1’,如果CAN_IER寄存器的相应中断使能位也被置’1’时,则硬件对该位置’1’; 如果CAN_IER寄存器的ERRIE位为’1’,则产生状态改变中断。该位由软件清’0’。1位:SLAK睡眠模式确认,该位由硬件置’1’,指示软件CAN模块正处于睡眠模式。 该位是对软件请求进入睡眠模式的确认(对CAN_MCR寄存器的SLEEP位置’1’)。 当CAN退出睡眠模式时硬件对该位清’0’ (需要跟CAN总线同步)。 这里跟CAN总线同步是指,硬件需要在CAN的RX引脚上检测到连续的11位隐性位。 注: 通过软件或硬件对CAN_MCR的SLEEP位清’0’,将启动退出睡眠模式的过程。有关清除SLEEP位的详细信息,参见CAN_MCR寄存器的AWUM位的描述。0位:INAK初始化确认,该位由硬件置’1’,指示软件CAN模块正处于初始化模式。 该位是对软件请求进入初始化模式的确认(对CAN_MCR寄存器的INRQ位置’1’)。 当CAN退出初始化模式时硬件对该位清’0’ (需要跟CAN总线同步)。这里跟CAN总线同步是指,硬件需要在CAN的RX引脚上检测到连续的11位隐性位。CAN_TSR (CAN发送状态寄存器)31302928272625242322212019181716LOW2LOW1LOW0TME2TME1TME0CODE[1:0]ABRQ2保留TERR2ALST2TXOK2RQCP21514131211109876543210ABRQ1保留TERR1ALST1TXOK1RQCP1ABRQ0保留TERR0ALST0TXOK0RQCP031位:LOW2邮箱2最低优先级标志,当多个邮箱在等待发送报文,且邮箱2的优先级最低时,硬件对该位置’1’。30位:LOW1邮箱1最低优先级标志,当多个邮箱在等待发送报文,且邮箱1的优先级最低时,硬件对该位置’1’。29位:LOW0邮箱0最低优先级标志,当多个邮箱在等待发送报文,且邮箱0的优先级最低时,硬件对该位置’1’。28位:TME2发送邮箱2空,当邮箱2中没有等待发送的报文时,硬件对该位置’1’。27位:TME1发送邮箱1空,当邮箱1中没有等待发送的报文时,硬件对该位置’1’。26位:TME0发送邮箱0空,当邮箱0中没有等待发送的报文时,硬件对该位置’1’。24-25位:CODE[1:0]邮箱号,当有至少1个发送邮箱为空时,这2位表示下一个空的发送邮箱号。当所有的发送邮箱都为空时,这2位表示优先级最低的那个发送邮箱号。23位:ABRQ2邮箱2中止发送,软件置1,可以中止邮箱2的发送请求,当邮箱2的发送报文被清除时硬件对该位清0。如果邮箱2中没有等待发送的报文,则对该位置1无效。19位:TERR2邮箱2发送失败,当邮箱2因为出错而导致发送失败时,对该位置’1’。18位:ALST2邮箱2仲裁丢失,当邮箱2因为仲裁丢失而导致发送失败时,对该位置’1’。17位:TXOK2邮箱2发送成功,每次在邮箱2进行发送尝试后,硬件对该位进行更新:0(失败),1(成功)当邮箱2的发送请求被成功完成后,硬件对该位置’1’。16位:RQCP2邮箱2请求完成,当上次对邮箱2的请求(发送或中止)完成后,硬件对该位置’1’。软件对该位写’1’可以对其清’0’;当硬件接收到发送请求时 也对该位清’0’(CAN_TI2R 寄存器的TXRQ位被置’1’)。该位被清’0’时,邮箱2的其它发送状态位(TXOK2, ALST2和TERR2)也被清’0’。15位:ABRQ1邮箱1中止发送,软件置1,可以中止邮箱1的发送请求,当邮箱1的发送报文被清除时硬件对该位清’0’。如果邮箱1中没有等待发送的报文,则对该位置’1’无效。11位:TERR1邮箱1发送失败,当邮箱2因为出错而导致发送失败时,对该位置’1’。10位:ALST1邮箱1仲裁丢失,当邮箱1因为仲裁丢失而导致发送失败时,对该位置’1’。9位:TXOK1邮箱1发送成功,每次在邮箱1进行发送尝试后,硬件对该位进行更新:0(失败),1(成功)当邮箱1的发送请求被成功完成后,硬件对该位置’1’。8位:RQCP1邮箱1请求完成,当上次对邮箱1的请求(发送或中止)完成后,硬件对该位置’1’。软件对该位写’1’可以对其清’0’;当硬件接收到发送请求时 也对该位清’0’(CAN_TI21 寄存器的TXRQ位被置’1’)。该位被清’0’时,邮箱2的其它发送状态位(TXOK1, ALST1和TERR1)也被清’0’。7位:ABRQ1邮箱0中止发送,软件置1,可以中止邮箱1的发送请求,当邮箱1的发送报文被清除时硬件对该位清’0’。如果邮箱0中没有等待发送的报文,则对该位置’1’无效。3位:TERR0邮箱0发送失败,当邮箱0因为出错而导致发送失败时,对该位置’1’。2位:ALST0邮箱0仲裁丢失,当邮箱0因为仲裁丢失而导致发送失败时,对该位置’1’。1位:TXOK0邮箱0发送成功,每次在邮箱0进行发送尝试后,硬件对该位进行更新:0(失败),1(成功)当邮箱0的发送请求被成功完成后,硬件对该位置’1’。0位:RQCP0邮箱0请求完成,当上次对邮箱0的请求(发送或中止)完成后,硬件置1。软件写1,可以对其清0;当硬件接收到发送请求时 也对该位清’0’(CAN_TI20 寄存器的TXRQ位被置’1’)。该位被清’0’时,邮箱2的其它发送状态位(TXOK0, ALST0和TERR0)也被清’0’。CAN_RF0R(CAN接收FIFO 0寄存器)313029282726252423222120191817保留151413121110987654321保留RFOM0FOVR0FULL0保留FMP0[1:0]5位:RFOM0释放接收FIFO 0输出邮箱,软件通过置1,来释放接收FIFO的输出邮箱。如果接收FIFO为空,那么置1无效,即只有当FIFO中有报文时置’1’才有意义。 如果FIFO中有2个以上的报文,由于FIFO的特点,软件需要释放输出邮箱才能访问第2个报文。当输出邮箱被释放时,硬件对该位清’0’。4位:FOVR0-FIFO 0溢出,当FIFO 0已满,又收到新的报文且报文符合过滤条件,硬件对该位置’1’。该位由软件清’0’。3位:FULL0-FIFO 0满,当FIFO 0中有3个报文时,硬件对该位置’1’。该位由软件清’0’。1-0位:FMP0[1:0]-FIFO 0 报文数目,FIFO 0报文数目这2位反映了当前接收FIFO 0中存放的报文数目。每当1个新的报文被存入接收FIFO 0,硬件就对FMP0加1。 每当软件对RFOM0位写’1’来释放输出邮箱,FMP0就被减1,直到其为0。CAN_RF1R(CAN接收FIFO 1寄存器)313029282726252423222120191817保留151413121110987654321保留RFOM1FOVR1FULL1保留FMP1[1:0]5位:RFOM1释放接收FIFO 1输出邮箱,软件通过置1,来释放接收FIF1的输出邮箱。如果接收FIF1为空,那么置1无效,即只有当FIF1中有报文时置’1’才有意义。 如果FIFO中有2个以上的报文,由于FIFO的特点,软件需要释放输出邮箱才能访问第2个报文。当输出邮箱被释放时,硬件对该位清’0’。4位:FOVR1-FIF1 0溢出,当FIFO 1已满,又收到新的报文且报文符合过滤条件,硬件对该位置’1’。该位由软件清’0’。3位:FULL1-FIF1 1满,当FIFo 1中有3个报文时,硬件对该位置’1’。该位由软件清’0’。1-0位:FMP1[1:0]-FIFO 1 报文数目,FIFO 1报文数目这2位反映了当前接收FIFO 1中存放的报文数目。每当1个新的报文被存入接收FIFO 1,硬件就对FMP1加1。 每当软件对RFOM0位写’1’来释放输出邮箱,FMP0就被减1,直到其为0。CAN_IER (CAN中断使能寄存器)313029282726252423222120191817保留SLKIEWKUIE151413121110987654321ERRIE保留LECIEBOFIEEPVIEEWGIE保留FOVIE1FFIE1FMPIE1FOVIE0FFIE0FMPIE0TMEIE17位:SLKIE睡眠中断使能,定义:0(当SLAKI位被置’1’时,不产生中断;),1(当SLAKI位被置’1’时,产生中断。)16位:WKUIE唤醒中断使能,定义:0(当WKUI位被置’1’时,不产生中断),1(当WKUI位被置’1’时,产生中断)16016016015位:ERRIE错误中断使能,定义:0(当CAN_ESR寄存器有错误挂号时,不产生中断),1(当CAN_ESR寄存器有错误挂号时,产生中断)11位:LECIE上次错误号中断使能,定义:0(当检测到错误,硬件设置LEC[2:0]时,不设置ERRI位),1(当检测到错误,硬件设置LEC[2:0]时,设置ERRI位为’1’)10位:BOFIE离线中断使能,定义:0(当BOFF位被置’1’时,不设置ERRI位;),1(当BOFF位被置’1’时,设置ERRI位为’1’。)9位:EPVIE错误被动中断使能,定义:0(当EPVF位被置’1’时,不设置ERRI位;),1(当EPVF位被置’1’时,设置ERRI位为’1’。)8位:EWGIE错误警告中断使能,定义:0(当EWGF位被置’1’时,不设置ERRI位;),1(当EWGF位被置’1’时,设置ERRI位为’1’。)6位:FOVIE1-FIFO 1溢出中断使能,定义:0(当FIFO 1的FOVR位被置’1’时,不产生中断;),1(当FIFO 1的FOVR位被置’1’时,产生中断。)5位:FFIE1-FIFO 1满中断使能,定义:0(当FIFO 1的FULL位被置’1’时,不产生中断;),1(当FIFO 1的FULL位被置’1’时,产生中断。)4位:FMPIE1-FIFO 1消息挂号中断使能,定义:0(当FIFO 1的FMP[1:0]位为非0时,不产生中断;),1(当FIFO 1的FMP[1:0]位为非0时,产生中断。)3位:FOVIE0-FIFO 0溢出中断使能,定义:0(当FIFO 0的FOVR位被置’1’时,不产生中断),1(当FIFO 0的FOVR位被置’1’时,产生中断。)2位:FFIE0-FIFO 0满中断使能,定义:0(当FIFO 0的FULL位被置’1’时,不产生中断;),1(当FIFO 0的FULL位被置’1’时,产生中断。)1位:FMPIE0-FIFO 0消息挂号中断使能,定义:0(当FIFO 0的FMP[1:0]位为非0时,不产生中断;),1(当FIFO 0的FMP[1:0]位为非0时,产生中断。)0位:TMEIE发送邮箱空中断使能,定义:0(当RQCPx位被置’1’时,不产生中断;),1(当RQCPx位被置’1’时,产生中断。)CAN_ESR (CAN错误状态寄存器)31302928272625242322212019181716REC[7:0]TEC[7:0]1514131211109876543210保留LEC[2:0]保留BOFFEPVFWEGF31-24位:REC[7:0]接收错误计数器,这个计数器按照CAN协议的故障界定机制的接收部分实现。按照CAN的标准,当接收出错时, 根据出错的条件,该计数器加1或加8; 而在每次接收成功后,该计数器减1,或当该计数器的值大于127时,设置它的值为120。当该计数器的值超过127时,CAN进入错误被动状态。23-16位:TEC[7:0]9位发送错误计数器的低8位,与上面相似,这个计数器按照CAN协议的故障界定机制的发送部分实现。6-4位:LEC[2:0]上次错误代码,在检测到CAN总线上发生错误时,硬件根据出错情况设置。当报文被正确发送或接收后,硬件清除其值为0, 硬件没有使用错误代码7,软件可以设置该值,从而可以检测代码的更新。定义:000(没有错误),001(位填充错),010(格式(Form)错), 011(确认(ACK)错),100(隐性位错),101(显性位错),110(CRC错),111(由软件设置)2位:BOFF离线标志,当进入离线状态时,硬件对该位置’1’。当发送错误计数器TEC溢出,即大于255时,CAN进入离线状态。1位:EPVF错误被动标志,当出错次数达到错误被动的阈值时,硬件对该位置’1’。(接收错误计数器或发送错误计数器的值>127)。0位:EWGF错误警告标志,当出错次数达到警告的阈值时,硬件对该位置’1’。(接收错误计数器或发送错误计数器的值≥96)。CAN_BTR (CAN位时序寄存器)31302928272625242322212019181716SLIMLBKM保留SJW[1:0]保留TS2[2:0]TS1[3:0]1514131211109876543210保留BRP[9:0]31位:SILM静默模式(用于调试),定义:0(正常状态),1(静默模式)30位:LBKM环回模式(用于调试),定义:0(禁止环回模式),1(允许环回模式)25-24位:SJW[1:0]重新同步跳跃宽度,为了重新同步,该位域定义了CAN硬件在每位中可以延长或缩短多少个时间单元的上限。tRJW = tCAN x (SJW[1:0] + 1)。22-20位:TS2[2:0]时间段2,该位域定义了时间段2占用了多少个时间单元,tBS2 = tCAN x (TS2[2:0] + 1)。19-16位:TS1[3:0]时间段1,该位域定义了时间段1占用了多少个时间单元,tBS1 = tCAN x (TS1[3:0] + 1)9-0位:BRP[9:0]波特率分频器,该位域定义了时间单元(tq)的时间长度,tq = (BRP[9:0]+1) x tPCLKCAN_TIxR (发送邮箱标识符寄存器) (x=0..2)31302928272625242322212019181716STID[10:0]/EXID[28:18]EXID[17:13]1514131211109876543210EXID[12:0]IDERTR31-21位:STID[10:0]/EXID[28:18]标准标识符或扩展标识符,依据IDE位的内容,这些位或是标准标识符,或是扩展身份标识的高字节。20-3位:EXID[17:0]扩展标识符,扩展身份标识的低字节。2位:IDE标识符选择,该位决定发送邮箱中报文使用的标识符类型,定义:0(使用标准标识符),1(使用扩展标识符)1位:RTR远程发送请求,定义:0(数据帧),1(远程帧)0位:TXRQ发送数据请求,由软件对其置’1’,来请求发送邮箱的数据。当数据发送完成,邮箱为空时,硬件对其清’0’。CAN_TDTxR (发送邮箱数据长度和时间戳寄存器) (x=0..2)3130292827262524232221201918TIME[15:0]15141312111098765432保留TGT保留DLC[3:0]31-16位:TIME[15:0]报文时间戳,该域包含了,在发送该报文SOF的时刻,16位定时器的值8位:TGT发送时间戳,只有在CAN处于时间触发通信模式,即CAN_MCR寄存器的TTCM位为’1’时,该位才有效。定义:0(不发送时间戳TIME[15:0]) 1(发送时间戳TIME[15:0]。在长度为8的报文中,时间戳TIME[15:0]是最后2个发送的字节:TIME[7:0]作为第7个字节,TIME[15:8]为第8个字节, 它们替换了写入CAN_TDHxR[31:16]的数据(DATA6[7:0]和DATA7[7:0])。为了把时间戳的2个字节发送出去,DLC必须编程为8。)3-0位:DLC[15:0]发送数据长度,该域指定了数据报文的数据长度或者远程帧请求的数据长度。1个报文包含0到8个字节数据,而这由DLC决定。CAN_TDLxR (发送邮箱低字节数据寄存器) (x=0..2)3130292827262524232221201918DATA3[7:0]DATA2[7:0]15141312111098765432DATA1[7:0]DATA0[7:0]31-24位:DATA3[7:0]数据字节3,23-16位:DATA2[7:0]数据字节2,15-8位:DATA1[7:0]数据字节1,7-0位:DATA0[7:0]数据字节0,报文的数据字节 报文包含0到8个字节数据,且从字节0开始。CAN_TDHxR (发送邮箱高字节数据寄存器) (x=0..2)3130292827262524232221201918DATA7[7:0]DATA6[7:0]15141312111098765432DATA5[7:0]DATA4[7:0]31-24位:DATA7[7:0]数据字节7,注: 如果CAN_MCR寄存器的TTCM位为’1’,且该邮箱的TGT位也为’1’,那么DATA7和DATA6将被TIME时间戳代替。23-16,DATA6[7:0]数据字节6,15-8位:DATA5[7:0]数据字节5,7-0位:DATA4[7:0]数据字节4CAN_RIxR (接收FIFO邮箱标识符寄存器) (x=0..1)3130292827262524232221201918STID[10:0]/EXID[28:18]EXID[17:13]15141312111098765432EXID[12:0]IDERTR31-21位:STID[10:0]/EXID[28:18]标准标识符或扩展标识符,依据IDE位的内容,这些位或是标准标识符,或是扩展身份标识的高字节。20-3位:EXID[17:0]扩展标识符,扩展身份标识的低字节。2位:IDE: 标识符选择,该位决定接收邮箱中报文使用的标识符类型,定义:0(使用标准标识符),1(使用扩展标识符)1位:RTR远程发送请求,定义:0(数据帧),1(远程帧)CAN_RDTxR (接收FIFO邮箱数据长度和时间戳寄存器) (x=0..1)3130292827262524232221201918TXRQ171160171160171160171保留160171612111097654321FMI[7:0]DLC[3:0]31-16位:TIME[15:0]报文时间戳,该域包含了,在发送该报文SOF的时刻,16位定时器的值15-8位:FMI[15:0]过滤器匹配序号,这里是存在邮箱中的信息传送的过滤器序号。关于标识符过滤的细节,请参考22.7.4中有关过滤器匹配序号。3-0位:DLC[15:0]接收数据长度,该域表明接收数据帧的数据长度(0~8)。对于远程帧请求,数据长度DLC恒为0。CAN_RDLxR (接收FIFO邮箱低字节数据寄存器) (x=0..1)313029282726252423222120191817DATA3[7:0]DATA2[7:0]151413121110987654321DATA1[7:0]DATA0[7:0]31-24位:DATA3[7:0]数据字节3,23-16位:DATA2[7:0]数据字节2,15-8位:DATA1[7:0]数据字节1,7-0位:DATA0[7:0]数据字节0,报文的数据字节 报文包含0到8个字节数据,且从字节0开始。CAN_RDHxR (接收FIFO邮箱高字节数据寄存器) (x=0..1)313029282726252423222120191817DATA7[7:0]DATA6[7:0]151413121110987654321DATA5[7:0]DATA4[7:0]31-24位:DATA7[7:0]数据字节7,注: 如果CAN_MCR寄存器的TTCM位为’1’,且该邮箱的TGT位也为’1’,那么DATA7和DATA6将被TIME时间戳代替。23-16,DATA6[7:0]数据字节6,15-8位:DATA5[7:0]数据字节5,7-0位:DATA4[7:0]数据字节4CAN_FMR (CAN 过滤器主控寄存器)313029282726252423222120191817保留151413121110987654321保留FINIT保留CAN2SB[5:0](互联型)保留FINIT13-8位:CAN2SB[5:0]CAN2开始组,这些位由软件置1、清0。它们定义了CAN2(从)接口的开始组,范围是1~27。注:这些位只在互联型产品中,其它产品为保留位。0位:FINIT过滤器初始化模式,针对所有过滤器组的初始化模式设置。定义:0(过滤器组工作在正常模式),1(过滤器组工作在初始化模式)CAN 过滤器模式寄存器 (CAN_FM1R)注: 只有在设置CAN_FMR(FINIT=1),使过滤器处于初始化模式下,才能对该寄存器写入。313029282726252423222120191817保留FBM27FBM26FBM25FBM24FBM23FBM22FBM21FBM20FBM19FBM18FBM17FBM16151413121110987654321FBM15FBM14FBM13FBM12FBM11FBM10FBM9FBM8FBM7FBM6FBM5FBM4FBM3FBM2FBM1FBM013-0位:FBMx过滤器模式,过滤器组x的工作模式。注:位27:14只出现在互联型产品中,其它产品为保留位。定义: 0(过滤器组x的2个32位寄存器工作在标识符屏蔽位模式)1(过滤器组x的2个32位寄存器工作在标识符列表模式)CAN 过滤器位宽寄存器 (CAN_FS1R)313029282726252423222120191817保留FSC27FSC26FSC25FSC24FSC23FSC22FSC21FSC20FSC19FSC18FSC17FSC16151413121110987654321FSC15FSC14FSC13FSC12FSC11FSC10FSC9FSC8FSC7FSC6FSC5FSC4FSC3FSC2FSC1FSC0151413TIME[15:0]8016016016016016013-0位:FSCx过滤器位宽设置,过滤器组x(13~0)的位宽。注:位27:14只出现在互联型产品中,其它产品为保留位。 定义:0(过滤器位宽为2个16位)1(过滤器位宽为单个32位)CAN_FFA1R (CAN 过滤器FIFO关联寄存器)31302928272625242322212019181716FFA27FFA26FFA25FFA24FFA23FFA22FFA21FFA20FFA19FFA18FFA17FFA161514131211109876543210FFA15FFA14FFA13FFA12FFA11FFA10FFA9FFA8FFA7FFA6FFA5FFA4FFA3FFA2FFA1FFA013-0位:FFAx过滤器位宽设置,报文在通过了某过滤器的过滤后,将被存放到其关联的FIFO中。注:位27:14只出现在互联型产品中,其它产品为保留位。 定义:0(过滤器被关联到FIFO0),1(过滤器被关联到FIFO1)CAN 过滤器激活寄存器 (CAN_FA1R)31302928272625242322212019181716保留FACT27FACT26FACT25FACT24FACT23FACT22FACT21FACT20FACT19FACT18FACT17FACT161514131211109876543210FACT15FACT14FACT13FACT12FACT11FACT10FACT9FACT8FACT7FACT6FACT5FACT4FACT3FACT2FACT1FACT013-0位:FACTx过滤器激活,软件对某位设置’1’来激活相应的过滤器。只有对FACTx位清’0’,或对CAN_FMR寄存器的FINIT位设置’1’后, 才能修改相应的过滤器寄存器x(CAN_FxR[0:1])。注:位27:14只出现在互联型产品中,其它产品为保留位。定义:0(),1()CAN_FiRx (CAN 过滤器组i的寄存器x) (互联产品中i=0..27,其它产品中i=0..13;x=1..2)注:在互联型产品中共有14组过滤器:i=0..27;在其它产品中共有14组过滤器:i=0..13。每组过滤器由2个32位的寄存器,CAN_FiR[2:1]组成。 只有在CAN_FAxR寄存器相应的FACTx位清’0’,或CAN_FMR寄存器的FINIT位为’1’时,才能修改相应的过滤器寄存器。31302928272625242322212019181716FB31FB30FB29FB28FB27FB26FB25FB24FB23FB22FB21FB20FB19FB18FB17FB161514131211109876543210FB15FB14FB13FB12FB11FB10FB9FB8FB7FB6FB5FB4FB3FB2FB1FB031-0位:FB[31:0]过滤器位,标识符模式,寄存器的每位对应于所期望的标识符的相应位的电平。定义:0(期望相应位为显性位),1(期望相应位为隐性位) 屏蔽位模式,寄存器的每位指示是否对应的标识符寄存器位一定要与期望的标识符的相应位一致。定义:0(不关心,该位不用于比较) 1(必须匹配,到来的标识符位必须与滤波器对应的标识符寄存器位相一致。)注:根据过滤器位宽和模式的不同设置,过滤器组中的两个寄存器的功能也不尽相同。屏蔽位模式下的屏蔽/标识符寄存器,跟标识符列表模式下的寄存器位定义相同。SPI相关寄存器SPI控制寄存器1(SPI_CR1)1514131211109876543210BIDIMODEBIDIOECRCENCRCNEXTDFFRXONLYSSMSSILSBFIRSTSPEMSTRCPOLCPHA15位:BIDIMODE双向数据模式使能,定义:0(双线双向模式),1(单线双向模式)14位:BIDIOE双向模式下的输出使能,和BIDIMODE位一起决定在“单线双向”模式下数据的输出方向。定义:0(输出禁止(只收模式)),1(输出使能(只发模式)) 这个“单线”数据线在主设备端为MOSI引脚,在从设备端为MISO引脚。13位:CRCEN硬件CRC校验使能,定义:0(禁止CRC计算),1(启动CRC计算)注:只有在禁止SPI时(SPE=0),才能写该位,否则出错。该位只能在全双工模式下使用。12位:CRCNEXT下一个发送CRC,定义:0(下一个发送的值来自发送缓冲区),1(下一个发送的值来自发送CRC寄存器), 注:在SPI_DR寄存器写入最后一个数据后应马上设置该位。11位:DFF数据帧格式,定义:0(使用8位数据帧格式进行发送/接收),1(使用16位数据帧),注:只有当SPI禁止(SPE=0)时,才能写该位,否则出错。10位:RXONLY只接收,该位和BIDIMODE位一起决定在“双线双向”模式下的传输方向。在多个从设备的配置中,在未被访问的从设备上该位被置1, 使得只有被访问的从设备有输出,从而不会造成数据线上数据冲突。定义:0(全双工(发送和接收)),1(禁止输出(只接收模式))9位:SSM软件从设备管理,当SSM被置位时,NSS引脚上的电平由SSI位的值决定。定义:0(禁止软件从设备管理),1(启用软件从设备管理)8位:SSI内部从设备选择,该位只在SSM位为’1’时有意义。它决定了NSS上的电平,在NSS引脚上的I/O操作无效。7位:LSBFIRST帧格式,定义:0(先发送MSB),1(先发送LSB),注:当通信在进行时不能改变该位的值。6位:SPE-SPI使能,定义:0(禁止SPI设备),1(开启SPI设备)5-3位:BR[2:0]波特率控制,定义:000(fPCLK/2)001(fPCLK/4)010(fPCLK/8)011(fPCLK/16)100(/32)101(/64)110(/128)111(/256)注:通信时不能改2位:MSTR主设备选择,定义:0(配置为从设备),1(配置为主设备),注:当通信正在进行的时候,不能修改该位。1位:CPOL时钟极性,定义:0(空闲状态时,SCK保持低电平),1(空闲状态时,SCK保持高电平),注:当通信正在进行的时候,不能修改该位。0位:CPHA时钟相位,定义:0(数据采样从第一个时钟边沿开始),1(数据采样从第二个时钟边沿开始)注:当通信正在进行的时候,不能修改该位。SPI_CR2(SPI控制寄存器2)1514131211109876543210保留TXEIERXNEIEERRIE保留SSOETXDMAENRXDMAEN7位:TXEIE发送缓冲区空中断使能,定义:0(禁止TXE中断),1(允许TXE中断,当TXE标志置位为’1’时产生中断请求)6位:RXNEIE接收缓冲区非空中断使能,定义:0(禁止RXNE中断),1(允许RXNE中断,当RXNE标志置位时产生中断请求)5位:ERRIR错误中断使能,当错误(CRCERR、OVR、MODF)产生时,该位控制是否产生中断,定义:0(禁止错误中断),1(允许错误中断)2位:SSOE-SS输出使能,定义:0(禁止在主模式下SS输出,该设备可以工作在多主设备模式),1(设备开启时,开启主模式下SS输出,该设备不能工作在多主设备模式1位:TXDMAEN发送缓冲区DMA使能,当该位被设置时,TXE标志一旦被置位就发出DMA请求,定义:0(禁止发送缓冲区DMA),1(启动发送缓冲区DMA)0位:RXDMAEN接收缓冲区DMA使能,当该位被设置时,RXNE标志一旦被置位就发出DMA请求,定义:0(禁止接收缓冲区DMA),1(启动接收缓冲区DMA)SPI 状态寄存器(SPI_SR)1514131211109876543210BSYOVRMODFCRCERRUDRCHSIDETXERXNE7位:BSY忙标志,定义:0(SPI不忙),1(SPI正忙于通信,或者发送缓冲非空)该位由硬件置位或者复位,使用这个标志时需要特别注意23.3.7节和.8节6位:OVR溢出标志,定义:0(没有出现溢出错误),1(出现溢出错误),该位由硬件置位,由软件序列复位。关于软件序列的详细信息,参考23.4.7节。5位:MODF模式错误,定义:0(没有出现模式错误),1(出现模式错误),该位由硬件置位,由软件序列复位。关于软件序列的详细信息,参考23.3.10节4位:CRCERR-CRC错误标志,定义:0(收到的CRC值和SPI_RXCRCR寄存器中的值匹配),1(收到的CRC值和SPI_RXCRCR寄存器中的值不匹配)硬件置位,软件写0而复位3位:UDR下溢标志位,定义:0(未发生下溢),1(发生下溢)该标志位由硬件置’1’,由一个软件序列清’0’,注:在SPI模式下不使用。2位:CHSIDE声道,定义:0(需要传输或者接收左声道),1(需要传输或者接收右声道)注:在SPI模式下不使用。在PCM模式下无意义。1位:TXE发送缓冲为空,定义:0(发送缓冲非空),1(发送缓冲为空)0位:RXNE接收缓冲非空,定义:0(接收缓冲为空),1(接收缓冲非空)SPI 数据寄存器(SPI_DR)1514131211109876543210DR[15:0]15-0位:DR[15:0]数据寄存器,待发送或者已经收到的数据,数据寄存器对应两个缓冲区:一个用于写(发送缓冲);另外一个用于读(接收缓冲)。写操作将数据 写到发送缓冲区;读操作将返回接收缓冲区里的数据。对SPI模式的注释:根据SPI_CR1的DFF位对数据帧格式的选择,数据的发送和接收可以是8位或者16 位的。为保证正确的操作,需要在启用SPI之前就确定好数据帧格式。对于8位的数据,缓冲器是8位的,发送和接收时只会用到SPI_DR[7:0]。在接收时, SPI_DR[15:8]被强制为0。对于16位的数据,缓冲器是16位的,发送和接收时会用到整个数据寄存器,即SPI_DR[15:0]。SPI_CRCPR(SPI CRC多项式寄存器)(I2S模式下不使用)1514131211109876543210CRCPOLY[15:0]15-0位:CRCPOLY[15:0]:CRC多项式寄存器,该寄存器包含了CRC计算时用到的多项式。其复位值为0x0007,根据应用可以设置其他数值。SPI_RXCRCR(SPI Rx CRC寄存器)(I2S模式下不使用)1514131211109876543210RXCRC[15:0]15-0位:RXCRC[15:0]接收CRC寄存器,在启用CRC计算时,RXCRC[15:0]中包含了依据收到的字节计算的CRC数值。当在SPI_CR1的CRCEN位写入’1’时,该寄存器被复位 CRC计算使用SPI_CRCPR中的多项式。当数据帧格式被设置为8位时,仅低8位参与计算,并且按照CRC8的方法进行;当数据帧格式为16位时,寄存器中的 所有16位都参与计算,并且按照CRC16的标准。注:当BSY标志为’1’时读该寄存器,将可能读到不正确的数值。SPI_TXCRCR(SPI Tx CRC寄存器)1514131211109876543210TxCRC[15:0]15-0位:TxCRC[15:0]发送CRC寄存器,在启用CRC计算时,TXCRC[15:0]中包含了依据将要发送的字节计算的CRC数值。当在SPI_CR1中的CRCEN位写入’1’时,该寄存器被复位 CRC计算使用SPI_CRCPR中的多项式。当数据帧格式被设置为8位时,仅低8位参与计算,并且按照CRC8的方法进行;当数据帧格式为16位时, 寄存器中的所有16个位都参与计算,并且按照CRC16的标准。注:当BSY标志为’1’时读该寄存器,将可能读到不正确的数值。SPI_I2S配置寄存器(SPI_I2S_CFGR)1514131211109876543210保留I2SMODI2SEI2SCFGPMCSYNC保留I2SSTDCKPOLDATLENCHLEN11位:I2SMOD-I2S模式选择,定义:0(选择SPI模式),1(选择I2S模式)10位:I2SE-I2S使能,定义:0(关闭I2S),1(I2S使能),注:在SPI模式下不使用。9-8位:I2SCFG-I2S模式设置,定义:00(从设备发送)01(从设备接收)10(主设备发送)11(主设备接受),注:该位只有在关闭了I2S时才能设置。在SPI模式下不使用。7位:PCMSYNC-PCM帧同步,定义:0(短帧同步),1(长帧同步),注: 该位只在I2SSTD = 11 (使用PCM标准)时有意义。在SPI模式下不使用。5-4位:I2SSTD-I2S标准选择,定义:00:(I2S飞利浦标准),01(高字节对齐标准 (左对齐),10(低字节对齐标准(右对齐),11(PCM 标准) 注:为了正确操作,只有在关闭了I2S时才能设置该位。在SPI模式下不使用。3位:CKPOL静止态时钟极性,定义:0(I2S时钟静止态为低电平),1(I2S时钟静止态为高电平),注:为了正确操作,该位只有在关闭了I2S时才能设置,在SPI模式下不使用。2-1位:DATLEN待传输数据长度,定义:00(16位数据长度)01(24位数据长度)10(32位数据长度)11(不允许)注:该位只有在关闭了I2S时才能设置。在SPI模式下不使用。0位:CHLEN声道长度 (每个音频声道的数据位数),定义:0(16位宽),1(32位宽),只有在DATLEN=00时该位的写操作才有意义,否则声道长度都由硬件固定为32位 注:为了正确操作,该位只有在关闭了I2S时才能设置。在SPI模式下不使用。SPI_I2S预分频寄存器(SPI_I2SPR)1514131211109876543210保留MCKOEODDI2SDIV9位:MCKOE主设备时钟输出使能,定义:0(关闭主设备时钟输出),1(主设备时钟输出使能) 为了正确操作,该位只有在关闭了I2S时才能设置。仅在I2S主设备模式下使用该位。在SPI模式下不使用。8位:ODD奇系数预分频,定义:0(实际分频系数=I2SDIV *2),1(实际分频系数=(I2SDIV * 2)+1) 注:为了正确操作,该位只有在关闭了I2S时才能设置。仅在I2S主设备模式下使用该位。在SPI模式下不使用。7-0位:I2SDIV-I2S线性预分频,禁止设置I2SDIV [7:0] = 0或者I2SDIV [7:0] = 1。参见23.4.3节 注:为了正确操作,该位只有在关闭了I2S时才能设置。仅在I2S主设备模式下使用该位。在SPI模式下不使用。I2C相关寄存器I2C_CR1(控制寄存器1)1514131211109876543210SWRST保留ALERTPECPOSACKSTOPSTARTNOSTERTCHENGCENPECENARPSMBTYPE保留SMBUSPE15位:SWRST软件复位,当被置位时,I2C处于复位状态,在复位该位前确信I2C的引脚被释放,总线是空的,定义:0(I2C模块不处于复位状态),1(I2C模块处于复位状态) 注:该位可以用于BUSY位为’1’,在总线上又没有检测到停止条件时。13位:ALERT-SMBus提醒,软件可以设置或清除该位;当PE=0时,由硬件清除。定义: 0(释放SMBAlert引脚使其变高。提醒响应地址头紧跟在NACK信号后面),1(驱动SMBAlert引脚使其变低。提醒响应地址头紧跟在ACK信号后面)12位:PEC数据包出错检测,软件可以设置或清除该位;当传送PEC后,或起始或停止条件时,或当PE=0时硬件将其清除。定义: 0(无PEC传输)1(PEC传输(在发送或接收模式)。注:仲裁丢失时,PEC的计算失效。11位:POS应答/PEC位置(用于数据接收),软件可以设置或清除该位,或当PE=0时,由硬件清除.定义: 0:ACK位控制当前移位寄存器内正在接收的字节的(N)ACK。 PEC位表明当前移位寄存器内的字节是PEC; 1: ACK位控制在移位寄存器里接收的下一个字节的(N)ACK。PEC位表明在移位寄存器里接收的下一个字节是PEC。 注:POS位只能用在2字节的接收配置中,必须在接收数据之前配置。为了NACK第2个字节,必须在清除ADDR为之后清除ACK位。 为了检测第2个字节的PEC,必须在配置了POS位之后,拉伸ADDR事件时设置PEC位。10位:ACK应答使能,软件可以设置或清除该位,或当PE=0时,由硬件清除。定义:0(无应答返回),1(在接收到一个字节后返回一个应答(匹配的地址或数据)9位:STOP停止条件产生,软件可以设置或清除该位;或当检测到停止条件时,由硬件清除;当检测到超时错误时,硬件将其置位, 在主模式下定义:0(不产生停止条件),1(在当前字节传输或在当前起始条件发出后产生停止条件) 在从模式下定义:0(不产生停止条件),1(在当前字节传输或释放SCL和SDA线) 注:当设置了STOP、START或PEC位,在硬件清除这个位之前,软件不要执行任何对I2C_CR1的写操作;否则有可能会第2次设置STOP、START或PEC位。8位:START起始条件产生,软件可以设置或清除该位,或当起始条件发出后或PE=0时,由硬件清除。 在主模式下:0(无起始条件产生),1(重复产生起始条件)在从模式下:0(无起始条件产生),1(当总线空闲时,产生起始条件)7位:NOSTRETCH禁止时钟延长(从模式),该位用于当ADDR或BTF标志被置位,在从模式下禁止时钟延长,直到它被软件复位。定义:0(允许时钟延长),1(禁止时钟延长)6位:ENGC广播呼叫使能,定义:0(禁止广播呼叫。以非应答响应地址00h),1(允许广播呼叫. 以应答响应地址00h)5位:ENPEC-PEC使能,定义:0(禁止PEC计算),1(开启PEC计算)4位:ENARP-ARP使能,定义:0(禁止ARP),1(使能ARP),如果SMBTYPE=0,使用SMBus设备的默认地址。如果SMBTYPE=1,使用SMBus的主地址。3位:SMBTYPE-SMBus类型,定义:0(SMBus设备),1(SMBus主机)1位:SMBUS-SMBus模式,定义:0(I2C模式),1(SMBus模式)0位:PE-I2C模块使能,定义:0(禁用I2C模块),1(启用I2C模块:根据SMBus位的设置,相应的I/O口需配置为复用功能) 注:如果清除该位时通讯正在进行,在当前通讯结束后,I2C模块被禁用并返回空闲状态。由于在通讯结束后发生PE=0,所有的位被清除。 在主模式下,通讯结束之前,绝不能清除该位。I2C_CR2(控制寄存器2)1514131211109876543210保留LASTDMAENITBUFENITEVTENITERREN保留FREQ[5:0]12位:LAST-DMA最后一次传输,定义:0(下一次DMA的EOT不是最后的传输),1(下一次DMA的EOT是最后的传输),注:该位在主接收模式使用, 使得在最后一次接收数据时可以产生一个NACK。11位:DMAEN-DMA请求使能,定义:0(禁止DMA请求),1(当TxE=1或RxNE =1时,允许DMA请求)10位:ITBUFEN缓冲器中断使能,定义:0(当TxE=1或RxNE=1时,不产生任何中断),1(当TxE=1或RxNE=1时,产生事件中断(不管DMAEN是何种状态)9位:ITEVTEN事件中断使能,定义:0(禁止事件中断),1(允许事件中断),在下列条件下,将产生该中断– SB = 1 (主模式);– ADDR = 1 (主/从模式); –ADD10=1(主模式);–STOPF=1(从模式);–BTF=1,但是没有TxE或RxNE事件;– 如果ITBUFEN = 1,TxE事件为1;– 如果ITBUFEN = 1,RxNE事件为1。8位:ITERREN出错中断使能,定义:0(禁止出错中断),1(允许出错中断)在下列条件下,将产生该中断:BERR=1;ARLO=1;AF=1;OVR=1;PECERR=1;TIMEOUT=1;SMBAlert=15-0位:FREQ[5:0]I2C模块时钟频率,必须设置正确的输入时钟频率以产生正确的时序,允许的范围在2~36MHz之间,定义:000000(禁用)000001(禁用) 000010(2M),000011(3M),100100(36MHz),大于100100(禁用)I2C_OAR1(自身地址寄存器1)1514131211109876543210ADDMODE保留保留ADD9[9:8]ADD[7:1]ADD015位:ADDMODE寻址模式(从模式),定义:0(7位从地址(不响应10位地址),1(10位从地址(不响应7位地址)14位:必须始终由软件保持为’1’。9-8位:ADD[9:8]接口地址,7位地址模式时不用关心,10位地址模式时为地址的9~8位。7-1位:ADD[7:1]接口地址,地址的7~1位0位:ADD0接口地址,7位地址模式时不用关心。10位地址模式时为地址第0位。自身地址寄存器2(I2C_OAR2)151413121110987654ADD2[7:1]321ENDUAL07-1位:ADD2[7:1]接口地址,在双地址模式下地址的7~1位0位:ENDUAL双地址模式使能位,定义:0(在7位地址模式下,只有OAR1被识别),1(在7位地址模式下,OAR1和OAR2都被识别)I2C_DR(数据寄存器)1514131211109876543210保留DR[7:0]7-0位:DR[7:0]8位数据寄存器,用于存放接收到的数据或放置用于发送到总线的数据。发送器模式:当写一个字节至DR寄存器时,自动启动数据传输。一旦传输开始(TxE=1) 如果能及时把下一个需传输的数据写入DR寄存器,I2C模块将保持连续的数据流。 接收器模式:接收到的字节被拷贝到DR寄存器(RxNE=1)。在接收到下一个字节(RxNE=1)之前读出数据寄存器,即可实现连续的数据传送。 注:在从模式下,地址不会被拷贝进数据寄存器DR;注:硬件不管理写冲突(如果TxE=0,仍能写入数据寄存器); 注:如果在处理ACK脉冲时发生ARLO事件,接收到的字节不会被拷贝到数据寄存器里,因此不能读到它。I2C_SR1(状态寄存器1)1514131211109876543210SMBALERTTIMEOUT保留PECERROVRAFARL0BERRTxERxNE保留STOPFADD10BTFADDRSB15位:SMBALERT-SMBus提醒,在SMBus主机模式下:0(无SMBus提醒)1(在引脚上产生SMBAlert提醒事件)在SMBus从机模式下:0(没有SMBAlert响应地址头序列) 1(收到SMBAlert响应地址头序列至SMBAlert变低)该位由软件写’0’清除,或在PE=0时由硬件清除。14位:TIMEOUT超时或Tlow错误,定义:0(无超时错误),1(SCL处于低已达到25ms(超时);或者主机低电平累积时钟扩展时间超过10ms(Tlow:mext);或从设备 低电平累积时钟扩展时间超过25ms(Tlow:sext))– 当在从模式下设置该位:从设备复位通讯,硬件释放总线。 – 当在主模式下设置该位:硬件发出停止条件。– 该位由软件写’0’清除,或在PE=0时由硬件清除。12位:PECERR在接收时发生PEC错误,定义:0(无PEC错误:接收到PEC后接收器返回ACK(如果ACK=1),1(有PEC错误:接收到PEC后接收器返回NACK(不管ACK是什么值) – 该位由软件写’0’清除,或在PE=0时由硬件清除。11位:OVR过载/欠载,定义:0(无过载/欠载),1(出现过载/欠载)– 当NOSTRETCH=1时,在从模式下该位被硬件置位,同时: – 在接收模式中当收到一个新的字节时(包括ACK应答脉冲),数据寄存器里的内容还未被读出,则新接收的字节将丢失。 – 在发送模式中当要发送一个新的字节时,却没有新的数据写入数据寄存器,同样的字节将被发送两次。– 该位由软件写’0’清除,或在PE=0时由硬件清除 注:如果数据寄存器的写操作发生时间非常接近SCL的上升沿,发送的数据是不确定的,并发生保持时间错误10位:AF应答失败,定义:0(没有应答失败),1(应答失败)– 当没有返回应答时,硬件将置该位为’1’。– 该位由软件写’0’清除,或在PE=0时由硬件清除。9位:ARLO仲裁丢失(主模式),定义:0(没有检测到仲裁丢失),1(检测到仲裁丢失)当接口失去对总线的控制给另一个主机时,硬件将将置该位为’1’。 – 该位由软件写’0’清除,或在PE=0时由硬件清除。在ARLO事件之后,I2C接口自动切换回从模式(M/SL=0)。 注:在SMBUS模式下,在从模式下对数据的仲裁仅仅发生在数据阶段,或应答传输区间(不包括地址的应答)。8位:BERR总线出错,定义:0(无起始或停止条件出错),1(起始或停止条件出错)– 当接口检测到错误的起始或停止条件,硬件将该位置’1’。 – 该位由软件写’0’清除,或在PE=0时由硬件清除。7位:TxE数据寄存器为空(发送时),定义:0(数据寄存器非空),1(数据寄存器空)-在发送数据时,数据寄存器为空时该位被置’1’,在发送地址阶段不设置该位。 – 软件写数据到DR寄存器可清除该位;或在发生一个起始或停止条件后,或当PE=0时由硬件自动清除.如果收到一个NACK,或下一个要发送的字节是PEC(PEC=1), 该位不被置位。注:在写入第1个要发送的数据后,或设置了BTF时写入数据,都不能清除TxE位,这是因为数据寄存器仍然为空。6位:RxNE数据寄存器非空(接收时),定义:0(数据寄存器为空),1(数据寄存器非空),– 在接收时,当数据寄存器不为空,该位被置’1’。 在接收地址阶段,该位不被置位。– 软件对数据寄存器的读写操作清除该位,或当PE=0时由硬件清除。在发生ARLO事件时,RxNE不被置位。 注:当设置了BTF时,读取数据不能清除RxNE位,因为数据寄存器仍然为满。4位:STOPF停止条件检测位(从模式),定义:0(没有检测到停止条件),1(检测到停止条件)– 在一个应答之后(如果ACK=1),当从设备在总线上检测到停止条件时, 硬件将该位置’1’。– 软件读取SR1寄存器后,对CR1寄存器的写操作将清除该位,或当PE=0时,硬件清除该位。注:在收到NACK后,STOPF位不被置位。3位:ADD10-10位头序列已发送(主模式),定义:0(没有ADD10事件发生),1(主设备已经将第一个地址字节发送出去)– 在10位地址模式下,当主设备 已经将第一个字节发送出去时,硬件将该位置’1’。– 软件读取SR1寄存器后,对CR1寄存器的写操作将清除该位,或当PE=0时,硬件清除该位。 注:收到一个NACK后,ADD10位不被置位。2位:BTF字节发送结束,定义:0(字节发送未完成),1(字节发送结束)当NOSTRETCH=0时,在下列情况下硬件将该位置’1’: –在接收时,当收到一个新字节(包括ACK脉冲)且数据寄存器还未被读取(RxNE=1)。在发送时,当一个新数据将被发送且数据寄存器还未被写入新的数据(TxE=1)。 – 在软件读取SR1寄存器后,对数据寄存器的读或写操作将清除该位;或在传输中发送一个起始或停止条件后,或当PE=0时,由硬件清除该位。 注:在收到一个NACK后,BTF位不会被置位。如果下一个要传输的字节是PEC(I2C_SR2寄存器中TRA为1,同时I2C_CR1寄存器中PEC为’1’),BTF位不会被置位。1位:ADDR地址已被发送(主模式)/地址匹配(从模式),在软件读取SR1寄存器后,对SR2寄存器的读操作将清除该位,或当PE=0时,由硬件清除该位。 地址匹配(从模式)0:地址不匹配或没有收到地址;1:收到的地址匹配。– 当收到的从地址与OAR寄存器中的内容相匹配、或发生广播呼叫、或SMBus设备 默认地址或SMBus主机识别出SMBus提醒时,硬件就将该位置’1’(当对应的设置被使能时)。 地址已被发送(主模式)0:地址发送没有结束;1:地址发送结束。– 10位地址模式时,当收到地址的第二个字节的ACK后该位被置’1’。 – 7位地址模式时,当收到地址的ACK后该位被置’1’。注:在收到NACK后,ADDR位不会被置位。0位:SB起始位(主模式),定义:0(未发送起始条件)1(起始条件已发送)– 当发送出起始条件时该位被置’1’。 – 软件读取SR1寄存器后,写数据寄存器的操作将清除该位,或当PE=0时,硬件清除该位。I2C_SR2 (状态寄存器2)1514131211109876543210PEC[7:0]DUALFSMBHOSTDEFAULTGENCALL保留TRABUSYMSL15-8位:PEC[7:0]数据包出错检测,当ENPEC=1时,PEC[7:0]存放内部的PEC的值7位:DUALF双标志(从模式),定义:0(接收到的地址与OAR1内的内容相匹配)1(接收到的地址与OAR2内的内容相匹配) – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。6位:SMBHOST-SMBus主机头系列(从模式),定义:0(未收到SMBus主机的地址),1(当SMBTYPE=1且ENARP=1时,收到SMBus主机地址) – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。5位:SMBDEFAULT-SMBus设备默认地址(从模式),定义:0(未收到SMBus设备的默认地址)1(当ENARP=1时,收到SMBus设备的默认地址) – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。4位:GENCALL广播呼叫地址(从模式),定义:0(未收到广播呼叫地址)1(当ENGC=1时,收到广播呼叫的地址) – 在产生一个停止条件或一个重复的起始条件时,或PE=0时,硬件将该位清除。2位:TRA发送/接收,定义:0(接收到数据)1(数据已发送)在整个地址传输阶段的结尾,该位根据地址字节的R/W位来设定。 在检测到停止条件(STOPF=1)、重复的起始条件或总线仲裁丢失(ARLO=1)后,或当PE=0时,硬件将其清除。1位:BUSY总线忙,定义:0(在总线上无数据通讯)1(在总线上正在进行数据通讯)– 在检测到SDA或SCl为低电平时,硬件将该位置’1’; – 当检测到一个停止条件时,硬件将该位清除。该位指示当前正在进行的总线通讯,当接口被禁用(PE=0)时该信息仍然被更新。0位:MSL主从模式,定义:0(从模式)1(主模式)– 当接口处于主模式(SB=1)时,硬件将该位置位; – 当总线上检测到一个停止条件、仲裁丢失(ARLO=1时)、或当PE=0时,硬件清除该位。I2C_CCR(时钟控制寄存器)1514131211109876543210F/SDUTY保留CRR[11:0]15位:F/S-I2C主模式选项,定义:0(标准模式的I2C)1(快速模式的I2C)14位:DUTY快速模式时的占空比,定义:0(快速模式下:Tlow/Thigh = 2)1(快速模式下:Tlow/Thigh = 16/9(见CCR)11-0位:CCR[11:0]快速/标准模式下的时钟控制分频系数(主模式)该分频系数用于设置主模式下的SCL时钟。 在I2C标准模式或SMBus模式下: Thigh = CCR ×TPCLK1;Tlow = CCR ×TPCLK1; 在I2C快速模式下:如果DUTY = 0:Thigh = CCR ×TPCLK1;Tlow = 2 × CCR × TPCLK1 如果DUTY = 1: (速度达到400kHz);Thigh = 9 × CCR ×TPCLK1;Tlow = 16 × CCR ×TPCLK1I2C_TRISE(TRISE寄存器)15141312111098765432保留TRISE[5:0]5-0位:TRISE[5:0]在快速/标准模式下的最大上升时间(主模式),这些位必须设置为I2C总线规范里给出的最大的SCL上升时间,增长步幅为1。10 注:只有当I2C被禁用(PE=0)时,才能设置TRISE[5:0]。见P514页串口通讯相关寄存器242322212019181716保留1514131211109876543210保留CTSLBDTXETCRXNELDLEORENEFEPE9位:CTS-CTS标志,如果设置了CTSE位,当nCTS输入变化状态时,该位被硬件置高。由软件将其清零。如果USART_CR3中的CTSIE为’1’,则产生中断。 定义:0(nCTS状态线上没有变化),1(nCTS状态线上发生变化)注:UART4和UART5上不存在这一位。8位:LBD-LIN断开检测标志,当探测到LIN断开时,该位由硬件置’1’,由软件清’0’(向该位写0)。如果USART_CR3中的LBDIE = 1,则产生中断 定义:0(没有检测到LIN断开),1(检测到LIN断开)注意:若LBDIE=1,当LBD为’1’时要产生中断。7位:TXE发送数据寄存器空,当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位。如果USART_CR1寄存器中的TXEIE为1,则产生中断。 对USART_DR的写操作,将该位清零。注意:单缓冲器传输中使用该位。 定义:0(数据还没有被转移到移位寄存器),1(数据已经被转移到移位寄存器)6位:TC发送完成,当包含有数据的一帧发送完成后,并且TXE=1时,由硬件将该位置’1’。如果USART_CR1中的TCIE为’1’,则产生中断。 由软件序列清除该位(先读USART_SR,然后写入USART_DR)。TC位也可以通过写入’0’来清除,只有在多缓存通讯中才推荐这种清除程序。 定义:0(发送还未完成),1(发送完成)5位:RXNE读数据寄存器非空,当RDR移位寄存器中的数据被转移到USART_DR寄存器中,该位被硬件置位。如果USART_CR1寄存器中的RXNEIE为1,则产生中断。 对USART_DR的读操作可以将该位清零。RXNE位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。 定义:0(数据没有收到),1(收到数据,可以读出)4位:IDLE监测到总线空闲,当检测到总线空闲时,该位被硬件置位。如果USART_CR1中的IDLEIE为1,则产生中断。由软件序列清除该位(先读USART_SR,然后读USART_DR)。 定义:0(没有检测到空闲总线)1(检测到空闲总线)注意:IDLE位不会再次被置高直到RXNE位被置起(即又检测到一次空闲总线)3位:ORE过载错误,当RXNE仍然是’1’的时候,当前被接收在移位寄存器中的数据,需要传送至RDR寄存器时,硬件将该位置位。如果USART_CR1中的RXNEIE为’1’的话, 则产生中断。由软件序列将其清零(先读USART_SR,然后读USART_CR)。定义:0(没有过载错误),1(检测到过载错误) 注意:该位被置位时,RDR寄存器中的值不会丢失,但是移位寄存器中的数据会被覆盖。如果设置了EIE位,在多缓冲器通信模式下,ORE标志置位会产生中断的2位:NE噪声错误标志,在接收到的帧检测到噪音时,由硬件对该位置位。由软件序列对其清玲(先读USART_SR,再读USART_DR)。 注意:该位不会产生中断,因为它和RXNE一起出现,硬件会在设置RXNE标志时产生中断。在多缓冲区通信模式下,如果设置了EIE位,则设置NE标志时会产生中断。 定义:0(没有检测到噪声),1(检测到噪声)1位:FE帧错误,当检测到同步错位,过多的噪声或者检测到断开符,该位被硬件置位。由软件序列将其清零(先读USART_SR,再读USART_DR)。 定义:0(没有检测到帧错误),1(检测到帧错误或者break符), 注意:该位不会产生中断,因为它和RXNE一起出现,硬件会在设置RXNE标志时产生中断。如果当前传输的数据既产生了帧错误,又产生了过载错误, 硬件还是会继续该数据的传输,并且只设置ORE标志位。在多缓冲区通信模式下,如果设置了EIE位,则设置FE标志时会产生中断。0位:PE校验错误,在接收模式下,如果出现奇偶校验错误,硬件对该位置位。由软件序列对其清零(依次读USART_SR和USART_DR)。在清除PE位前, 软件必须等待RXNE标志位被置’1’。如果USART_CR1中的PEIE为’1’,则产生中断。定义:0(没有奇偶校验错误),1(奇偶校验错误)USART_DR(数据寄存器) 31302928272625242322212019181716保留1514131211109876543210保留DR[8:0]8-0位:DR[8:0]数据值,包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收用(RDR),该寄存器兼具读和写的功能。 TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口(参见图248)。RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。31302928272625 当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不同,MSB是第7位或者第8位)会被后来的校验位该取代。 当使能校验位进行接收时,读到的MSB位是接收到的校验位。USART_BRR(波特比率寄存器)313029282726252423222120191817保留151413121110987654321DIV_Mantissa[11:0]DIV_Fraction[3:0]15-4位:DIV_Mantissa[11:0]USARTDIV的整数部分,这12位定义了USART分频器除法因子(USARTDIV)的整数部分。3-0位:DIV_Fraction[3:0]USARTDIV的小数部分,这4位定义了USART分频器除法因子(USARTDIV)的小数部分。USART_CR1(控制寄存器1)313029282726252423222120191817160161514131211109876543210保留UEMWAKEPCEPSPEIETXEIETCIERXNEIEIDLEIETERERWUSBK13位:UE-USART使能,当该位被清零,在当前字节传输完成后USART的分频器和输出停止工作,以减少功耗。该位由软件设置和清零。 定义:0(USART分频器和输出被禁止),1(USART模块使能)12位:M字长,该位定义了数据字的长度,由软件对其设置和清零,定义:0(一个起始位,8个数据位,n个停止位)1(一个起始位,9个数据位,n个停止位) 注意:在数据传输过程中(发送或者接收时),不能修改这个位。11位:WAKE唤醒的方法,这位决定了把USART唤醒的方法,由软件对该位设置和清零。定义:0(被空闲总线唤醒)1(被地址标记唤醒)10位:PCE检验控制使能,用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位的检测)。当使能了该位, 在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置’1’或清’0’。 一旦设置了该位,当前字节传输完成后,校验控制才生效。定义:0(禁止校验控制),1(使能校验控制)9位:PS校验选择,当校验控制使能后,该位用来选择是采用偶校验还是奇校验。软件对它置1或清0。当前字节传输完成后,该选择生效。定义:0(偶校验)1(奇校验)8位:PEIE-PE中断使能,该位由软件设置或清除,定义:0(禁止产生中断),1(当USART_SR中的PE为’1’时,产生USART中断)7位:TXEIE发送缓冲区空中断使能,(手动),定义:0(禁止产生中断),1(当USART_SR中的TXE为’1’时,产生USART中断)6位:TCIE发送完成中断使能,(手动),定义:0(禁止产生中断)1(当USART_SR中的TC为’1’时,产生USART中断)5位:RXNEIE接收缓冲区非空中断使能,(手动),定义:0(禁止产生中断),1(当USART_SR中的ORE或者RXNE为’1’时,产生USART中断)4位:IDLEIE-IDLE中断使能,(手动),定义:0(禁止产生中断),1(当USART_SR中的IDLE为’1’时,产生USART中断)3位:TE发送使能,该位使能发送器。(手动,定义:0(禁止发送),1(使能发送)注意:1.在数据传输过程中,除了在智能卡模式下, 如果TE位 上有个0脉冲(即设置为’0’之后再设置为’1’),会在当前数据字传输完成后,发送一个“前导符”(空闲总线)。 2.当TE被设置后,在真正发送开始之前,有一个比特时间的延迟。2位:RE接收使能(手动),定义:0(禁止接收),1(使能接收,并开始搜寻RX引脚上的起始位)1位:RWU接收唤醒,该位用来决定是否把USART置于静默模式。该位由软件设置或清除。当唤醒序列到来时,硬件也会将其清零 定义:0(接收器处于正常工作模式),1(接收器处于静默模式)注意:1.在把USART置于静默模式(设置RWU位)之前,USART要已经先接收了一个数据字节。 否则在静默模式下,不能被空闲总线检测唤醒。2.当配置成地址标记检测唤醒(WAKE位=1),在RXNE位被置位时,不能用软件修改RWU位。0位:SBK发送断开帧,使用该位来发送断开字符。该位可以由软件设置或清除。操作过程应该是软件设置位它,然后在断开帧的停止位时,由硬件将该位复位。 定义:0(没有发送断开字符),1(将要发送断开字符)控制寄存器2(USART_CR2)31302928272625242322212019181716保留1514131211109876543210保留LINENSTOP[1:0]CLKENCPOLCPHALBCL保留LBDIELBDL保留ADD[3:0]14位:LINEN0-LIN模式使能(手动),定义:0(禁止LIN模式),1(使能LIN模式) 在LIN模式下,可以用USART_CR1寄存器中的SBK位发送LIN同步断开符(低13位),以及检测LIN同步断开符。13-12位:STOP停止位,这2位用来设置停止位的位数,定义:00(1个停止位)01(0.5个停止位)10(2个停止位)11(1.5个停止位) 注:UART4和UART5不能用0.5停止位和1.5停止位。11位:CLKEN时钟使能,该位用来使能CK引脚,定义:0(禁止CK引脚),1(使能CK引脚)注:UART4和UART5上不存在这一位。10位:CPOL时钟极性,在同步模式下,可以用该位选择SLCK引脚上时钟输出的极性。和CPHA位一起配合来产生需要的时钟/数据的采样关系, 定义:0(总线空闲时CK引脚上保持低电平),1(总线空闲时CK引脚上保持高电平)注:UART4和UART5上不存在这一位。9位:CPHA时钟相位,在同步模式下,可以用该位选择SLCK引脚上时钟输出的相位。和CPOL位一起配合来产生需要的时钟/数据的采样关系(参见图259和图260)。 定义:0(在时钟的第一个边沿进行数据捕获),1(在时钟的第二个边沿进行数据捕获)注:UART4和UART5上不存在这一位8位:LBCL最后一位时钟脉冲,在同步模式下,使用该位来控制是否在CK引脚上输出最后发送的那个数据字节(MSB)对应的时钟脉冲 定义:0(最后一位数据的时钟脉冲不从CK输出),1(最后一位数据的时钟脉冲会从CK输出) 注意:1.最后一个数据位就是第8或者第9个发送的位(根据USART_CR1寄存器中的M位所定义的8或者9位数据帧格式)。2.UART4和UART5上不存在这一位。6位:LBDIE-LIN断开符检测中断使能,断开符中断屏蔽(使用断开分隔符来检测断开符),定义:0(禁止中断),1(只要USART_SR寄存器中的LBD为’1’就产生中断)5位:LBDL-LIN断开符检测长度,该位用来选择是11位还是10位的断开符检测,定义:0(10位的断开符检测),1(11位的断开符检测)3-0位:ADD[3:0]本设备的USART节点地址,该位域给出本设备USART节点的地址。这是在多处理器通信下的静默模式中使用的,使用地址标记来唤醒某个USART设备注意: 在使能发送后不能改写这三个位(CPOL、CPHA、LBCL)。USART_CR3(控制寄存器3)31302928272625242322212019181716保留1514131211109876543210保留CTSIECTSERTSEDMATDMARSCENNACKHDSELIRLPIRENEIE10位:CTSIE-CTS中断使能,定义:0(禁止中断),1(SART_SR寄存器中的CTS为’1’时产生中断)注:UART4和UART5上不存在这一位9位:CTSE-CTS使能,定义:0:禁止CTS硬件流控制1:CTS模式使能,只有nCTS输入信号有效(拉成低电平)时才能发送数据。如果在数据传输的过程中, nCTS信号变成无效,那么发完这个数据后,传输就停止下来。如果当nCTS为无效时,往数据寄存器里写数据,则要等到nCTS有效时才会发送这个数据。 注:UART4和UART5上不存在这一位8位:RTSE-RTS使能,定义:0(禁止RTS硬件流控制)1(RTS中断使能,只有接收缓冲区内有空余的空间时才请求下一个数据。当前数据发送完成后,发送操作就需 要暂停下来。如果可以接收数据了,将nRTS输出置为有效(拉至低电平)。注:UART4和UART5上不存在这一位。7位:DMAT-DMA使能发送,(手动),定义:0(禁止发送时的DMA模式)1(使能发送时的DMA模式)注:UART4和UART5上不存在这一位。6位:DMAR-DMA使能接收,(手动),定义:0(禁止接收时的DMA模式)1(使能接收时的DMA模式)注:UART4和UART5上不存在这一位。5位:SCEN智能卡模式使能,该位用来使能智能卡模式,定义:0(禁止智能卡模式)1(使能智能卡模式)注:UART4和UART5上不存在这一位。4位:NACK智能卡NACK使能,定义:0(校验错误出现时,不发送NACK)1(校验错误出现时,发送NACK)注:UART4和UART5上不存在这一位3位:HDSEL半双工选择,选择单线半双工模式,定义:0(不选择半双工模式)1(选择半双工模式)2位:IRLP红外低功耗,该位用来选择普通模式还是低功耗红外模式,定义:0(通常模式),1(低功耗模式)1位:IREN红外模式使能,(手动),定义:0(不使能红外模式),1(使能红外模式)0位:EIE错误中断使能,在多缓冲区通信模式下,当有帧错误、过载或者噪声错误时(USART_SR中的FE=1,或者ORE=1,或者NE=1)产生中断。 定义:0(禁止中断),1(只要USART_CR3中的DMAR=1,并且USART_SR中的FE=1,或者ORE=1,或者NE=1,则产生中断)保护时间和预分频寄存器(USART_GTPR)31302928272625242322212019181716保留1514131211109876543210GT[7:0]:保护时间值PSC[7:0]15-8位:GT[7:0]保护时间值,该位域规定了以波特时钟为单位的保护时间。在智能卡模式下,需要这个功能。当保护时间过去后,才会设置发送完成标志。 注:UART4和UART5上不存在这一位7-0位:PSC[7:0]预分频器值,在红外(IrDA)低功耗模式下:PSC[7:0]=红外低功耗波特率,对系统时钟分频以获得低功耗模式下的频率: 源时钟被寄存器中的值(仅有8位有效)分频,定义:00000000:保留 – 不要写入该值;00000001:对源时钟1分频;00000010:对源时钟2分频; 在红外(IrDA)的正常模式下:PSC只能设置为00000001,在智能卡模式下,PSC[4:0]:预分频值,对系统时钟进行分频,给智能卡提供时钟。 寄存器中给出的值(低5位有效)乘以2后,作为对源时钟的分频因子,00000:保留 – 不要写入该值;00001:对源时钟进行2分频;00010:对源时钟进行4分频 00011:对源时钟进行6分频;注意:1.位[7:5]在智能卡模式下没有意义。2.UART4和UART5上不存在这一位。中断和异位置
优先级-优先级类型--3固定-2固定-1固定0可设置
名称-ResetNMI
硬件失效
不可屏蔽中断RCC的CSS连接到NMI向量所有类型的失效
断和异常向量表
说明保留复位
RCC的CSS连接到NMI向量
地址0x0000 00000x0000 00040x0000 00080x0000 000C
二进制、十六进制转换规律
共1位0
0第一位:0x1
0
0第二位:0x2
0
1第三位:0x4
1
0第四位:0x8共2位0
0第一、二位:0x3
0
1第二、三位:0x6
1
1第三、四位:0xC
1
0第一、四位:0x9
1
0第二、四位:0xA
0
1
第一、三位:0x5
共3位01
0
1
第一二三位:0x71011第二三四位:0xE0011第一三四位:0xD0
010第一二四位:0xB
共4位
1111
0xF
100001100
1
1110011
1
11