完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
整理自STM32F4中文参考手册(ST)、STM32F4开发指南-寄存器版本(正点原子)、cortex m3与m4权威指南(英文)。更新中。 NVIC 此章节与内核相关,未在参考手册中出现,需参考权威指南。ISER1~8 (Interrupt Set-Enable Registers)中断使能寄存器组。CM4 内核支持 256 个中断,用 8 个 32 位寄存器来控制,每个位控制一个中断。由于STM32F4 的可屏蔽中断最多只有 82 个,所以仅ISER[0~2]有效,其中ISER[0]的 bit0~31 分别对应中断0~31;ISER[1]的 bit0~32 对应中断 32~63;ISER[2]的 bit0~17 对应中断 64~81。设置相应的 ISER 位为 1,使特定中断被使能。 具体每一位对应哪个中断,请参考 stm32f4xx.h 里面的第 188 行处。ICER1~8 (Interrupt Clear-Enable Registers)中断除能寄存器组。用来清除某个中断的使能。其对应位所代表的中断和 ISER 相同。通过置位来清除中断位。 ISPR1~8 (Interrupt Set-Pending Registers)中断挂起控制寄存器组。其对应位所代表的中断和 ISER 相同。通过置 1,可以将正在进行的中断挂起,执行同级或更高级别的中断。 ICPR1~8 (Interrupt Clear-Pending Registers)中断解挂控制寄存器组。其作用与 ISPR 相反,对应位所代表的中断和 ISER 相同。通过设置 1,可以将挂起的中断解挂。 IABR1~8 (Interrupt Active Bit Registers)中断激活标志位寄存器组,属于只读寄存器。其对应位所代表的中断和 ISER 相同。如果为 1,则表示该位所对应的中断正在被执行。在中断执行完毕后由硬件自动清零。 IP1~240 (Interrupt Priority Registers)中断优先级控制寄存器组。由 240 个 8bit的寄存器组成,每个可屏蔽中断占用 8bit,这样总共可以表示 240 个可屏蔽中断( STM32F4只用到了其中的 82 个)。IP[81]~IP[0]分别对应中断 81~0。每个可屏蔽中断高 4 位(低四位不用)分为抢占优先级和子优先级。抢占优先级在前,子优先级在后,根据 SCB->AIRCR 中的中断分组设置来决定而这两个优先级各占几个位。 GPIO IO 配置常用的 8 个寄存器:4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、 GPIOx_OSPEEDR 和 GPIOx_PUPDR)、2 个 32 位数据寄存器(GPIOx_IDR 和GPIOx_ODR)和 2 个 32 位复用功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。 GPIOx_MODER GPIO端口模式寄存器 (GPIO port mode register)用于控制GPIOx端口的工作模式。 每组IO下有16个IO口,该寄存器共32位,每2个位控制1个IO: 00-IN;01-OUT;10-AF;11-AN; GPIOx_OTYPER GPIO 端口输出类型寄存器 (GPIO port output type register)仅用于输出模式。 该寄存器低 16 位有效,每一个位控制一个 IO 口。 0-PP;1-OD GPIOx_OSPEEDR GPIO 端口输出速度寄存器 (GPIO port output speed register),仅用于输出模式,该寄存器用于控制 GPIOx 的输出速度,该寄存器每 2 个位控制一个 IO 口。 00-25MHZ;01-50MHZ;10-75MHZ;11-100MHZ GPIOx_PUPDR GPIO 端口上拉/下拉寄存器(GPIO port pull-up/pull-down register)该寄存器每 2 个位控制一个 IO 口,用于设置上下拉。 00-NOPULL;01-UP;10-DOWN GPIOx_ODR GPIO 端口输出数据寄存器 (GPIO port output data register)用于设置某个 IO 输出低电平(ODRy=0)还是高电平(ODRy=1). GPIOx_IDR GPIO 端口输入数据寄存器 (GPIO port input data register)用于读取某个 IO 的电平,如果对应的位为 0(IDRy=0),则说明该 IO 输入的是低电平,如果是 1(IDRy=1),则表示输入的是高电平。 EXIT STM32F4的EXTI控制器支持23 个外部中断/事件请求。EXTI_IMR 中断屏蔽寄存器(Interrupt mask register)。前 23 位有效。位 x 对应线 x 上的中断请求。当位 x 设置为 1 时,则开启这个线上的中断。 EXTI_EMR 事件屏蔽寄存器(Event mask register)。类似IMR,只是该寄存器是针对事件的屏蔽和开启。 EXTI_RTSR 上升沿触发选择寄存器(Rising trigger selection register)。前 23位有效。当位 x 设置为 1 时,则开启这个线上的上升沿触发中断/事件。 EXTI_FTSR 下降沿触发选择寄存器(Falling trigger selection register)。同 RTSR,设置下降沿触发中断/事件。 在同一中断线上,可以同时设置上升沿和下降沿触发,即任一边沿都可触发中断。EXTI_SWIER 软件中断事件寄存器(Software interrupt event register)。 SWIERx:线 x 上的软件中断 (Software Interrupt on line x)。.当该位为“0”时,写“1”将设置 EXTI_PR 中相应的挂起位。如果在 EXTI_IMR 和 EXTI_EMR 中允许产生该中断,则产生中断请求。在此位中写入“1”可以清除它(写1清0)。被设置的 SWIER位,将会在 PR 中的对应位清除后清除。 EXTI_PR 挂起寄存器(Pending register)。 PRx:挂起位 (Pending bit)。当外部中断线上发生了选择的边沿事件,该寄存器的对应位会被置为 1。在此位中写入“1”可以清除它(写1清0),也可以通过改变边沿检测的极性清除。 SYSCFG_EXTICR1~4 位于中文参考手册 8.2.4~8.2.7SYSCFG 外部中断配置寄存器( SYSCFG external interrupt configuration register )用来选择 EXTIx 外部中断的源输入。每个EXTICR 只用了其低 16 位,EXTICR[0]只管了 GPIO 的 0~3 端 口,相应的其他端口由 EXTICR[1~3]管理。 USART USART_SR 状态寄存器 (Status register). RXNE(Read data register not empty,读取数据寄存器非空):该位被置 1 时表明已经有数据被接收并且可以读取。可以通过读 USART_DR 或直接向该位写 0将该位清零。 TC(Transmission complete,发送完成):当该位被置位的时候,表示 USART_DR 内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读 USART_SR,写USART_DR。2)直接向该位写 0。 ORE:上溢错误 (Overrun error) TXE:发送数据寄存器为空 (Transmit data register empty) USART_DR 数据寄存器 (Data register)这是一个双寄存器,包含了 TDR 和 RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到数据的时候,也是存在该寄存器内。 当使能校验位(USART_CR1 中 PCE 位被置位)进行发送时,写到 MSB 的值(根据数据的长度不同,MSB 是第 7 位或者第 8 位)会被后来的校验位取代。当使能校验位进行接收时,读到的 MSB 位是接收到的校验位。 USART_BRR 波特率寄存器(Baud rate register) DIV_Fraction:位[3:0](当 OVER8=0 时有效)用来存放小数部分, DIV_Mantissa:位[15:4]用来存放整数部分 ,最高 16 位未使用。 USART_CR1~3 控制寄存器(Control register)低16位用于串口的功能设置。 OVER8(Oversampling mode)为过采样模式设置位,OVER8=0 时精度高,容错性好,OVER8=1 的时候,容错差,速度快。一般设置位 0,即 16 倍过采样已获得更好的容错性; UE 为串口使能位,置位以使能串口; M (Word length)字长选择位,当该位为 0 的时候设置串口为 8 个字长外加 n 个停止位,停止位的个数(n)是根据 USART_CR2 的停止位 (STOP bit)设置来决定的,默认为 0; PCE (Parity control enable)奇偶校验使能位,设置为1使能校验; PS (Parity selection)奇偶校验选择位,设置为 0 则为偶校验,否则为奇校验; TXEIE (TXE interrupt enable)发送缓冲区空中断使能位,设置该位为 1,当 USART_SR 中的 TXE 位为 1 时,将产生串口中断; TCIE(Transmission complete interrupt enable)传送完成中断使能。此位由软件置 1 为发送完成中断使能位。设置该位为 1,当 USART_SR 中的 TC 位为 1时,将产生串口中断; RXNEIE:RXNE中断使能 (RXNE interrupt enable)RXNE 为接收缓冲区非空中断使能,设置该位为 1,当 USART_SR 中 的 ORE 或者 RXNE 位为 1 时,将产生串口中断; TE 为发送使能位,置位将开启串口的发送功能; RE 为接收使能位,置位将开启串口的接受功能。 TIM(2~5) 基本设置 TIMx_CR(1~2) TIMx 控制寄存器 (TIMx control register ). CEN:计数器使能 (Counter enable) ARPE:自动重载预装载使能 (Auto-reload preload enable) 位为1时TIMx_ARR 寄存器进行缓冲(在每一次更新事件(UEV)时,才把预装载寄存器(ARR)的内容传送到影子寄存器。) TIMx_DIER TIMx DMA/中断使能寄存器 (TIMx DMA/Interrupt enable register) 16 位寄存器. UIE:更新中断使能 (Update interrupt enable) TIMx_SR TIMx 状态寄存器 (TIMx status register)用来标记当前与定时器相关的各种事件/中断是否发生。 UIF:更新中断标志 (Update interrupt flag) ● 该位在发生更新事件时通过硬件置 1。但需要通过软件清零。 TIMx_PSC TIMx 预分频器 (TIMx prescaler) 预分频器值。 TIMx_CNT TIMx 计数器 (TIMx counter). 计数器值。 TIMx_SMCR TIMx 从模式控制寄存器 (TIMx slave mode control register) TIMx_ARR TIMx 自动重载寄存器 (TIMx auto-reload register)含影子寄存器。 自动重载值。 PWM相关 TIMx_CCMR1~2 TIMx_CCMR1 控制 CH1 和 2,而 TIMx_CCMR2控制 CH3 和 4。TIMx 捕获/比较模式寄存器 (TIMx capture/compare mode register) OCxM:(Output compare x mode)模式设置位 ,此部分由 3位组成。总共可以配置成 7 种模式。PWM 模式1/2可设置为 110/111。这两种 PWM 模式的区别就是输出电平的极性相反。 CCxS :捕获/比较 x 选择 (Capture/Compare x selection),用于设置通道的方向(输入/输出)默认输出。注意:TIM14 仅有 1 个通道,只有低八位有效。 TIMx_CCER TIMx 捕获/比较使能寄存器 (TIMx capture/compare enable register). CCxE :捕获/比较 x 输出使能 (Capture/Compare x output enable) TIMx_CCR1~4 该寄存器总共有 4 个,对应 4 个通道 CH1~4.TIMx 捕获/比较寄存器 x (TIMx capture/compare register x)在输出模式下,该寄存器的值与 CNT 的值比较,根据比较结果产生相应动作。 高级定时器还需要配置:刹车和死区寄存器(TIMx_BDTR)ADC ADC_CR1 ADC 控制寄存器 1 (ADC control register 1) SCAN :该位用于设置扫描模式,由软件设置和清除,置1使用扫描模式。在扫描模式下,由 ADC_SQRx 或 ADC_JSQRx 寄存器选中的通道被转换。如果设置了 EOCIE 或 JEOCIE,只在最后一个通道转换完毕后才会产生 EOC 或 JEOC 中断。 RES:分辨率 (Resolution)用于设置 ADC 的分辨率:00-12;01-10;10-8;11-6 ADC_CR2 ADON :A/D 转换器开启 / 关闭 (A/D Converter ON / OFF)。置1使能ADC。 CONT :连续转换 (Continuous conversion)置0单次转换,置1多次转换。 ALIGN :数据对齐 (Data alignment),置0右对齐,置1左对齐。 EXTEN:规则通道的外部触发使能 (External trigger enable for regular channels)使用软件触发设置这 2 个位为 0 即可。 SWSTART :开始转换规则通道 (Start conversion of regular channels)每次转换(单次转换模式下)都需要向该位写1。 ADC_CCR ADC 通用控制寄存器 (ADC common control register) TSVREFE :温度传感器和 VREFINT 使能 (Temperature sensor and VREFINT enable) ADCPRE:ADC 预分频器 (ADC prescaler)用于设置ADC 输入时钟分频,00~11 分别对应2/4/6/8 分频。STM32F4 的 ADC 最大工作频率是 36Mhz, 而 ADC时钟(ADCCLK)来自APB2( 84Mhz),通常设置 ADCPRE=01(4 分频)使得ADCCLK 频率为 21Mhz。 MULTI:多重 ADC 模式选择 (Multi ADC mode selection)。独立模式时设置该5位为0. ADC_SMPR1~2 ADC 采样时间寄存器 (ADC sample time register )。用于设置通道 0~18 的采样时间,每个通道占用 3 个位。 ADC_SQR1~3 ADC 规则序列寄存器 (ADC regular sequence register ) L:规则通道序列长度 (Regular channel sequence length)可定义规则通道转换序列中的转换总数。 SQ:存储了规则序列中通道的编号(0~18)。 ADC_JSQR ADC 注入序列寄存器 (ADC injected sequence register) ADC_DR ADC 规则数据寄存器 (ADC regular data register)规则序列中的 AD 转化结果都将被存在这个寄存器里面,该寄存器的数据可以通过 ADC_CR2 的 ALIGN 位设置左对齐还是右对齐。 ADC_JDR1~4 ADC 注入数据寄存器 (ADC injected data register x)。注入通道的转换结果被保存在该寄存器里面。 ADC_SR ADC 状态寄存器 (ADC status register)该寄存器保存了 ADC 转换时的各种状态。 EOC :规则通道转换结束 (Regular channel end of conversion),该位为 1时表示转换已完成。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1609 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1540 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
681 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1587 浏览 2 评论
1861浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
643浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
528浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
503浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 18:35 , Processed in 1.676248 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号