STM32文档中关于NVIC寄存器说明的位置

更新时间:2023-05-20 14:48:59 阅读: 评论:0

superheroesSTM32文档中关于NVIC寄存器说明的位置
要使用STM32,需要各种文档,其中有(以STM32F103RBT6为例):
st官方资源地址:/internet/mcu/product/164487.jsp
1、datasheet:
2、REFERENCE MANUALS:
bha3、ERRATA SHEETS:
4、STM32F10x standard peripheral library:/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip
ARM官方:
5、Cortex-M3 Technical Reference Manual Revision r1p1:/help/topic/com.arm.doc.ddi0337e/DDI0337E_cortex_m3_r1p1_trm.pdf
6、ARMv7M Architecture Reference Manual:/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html
非官方的
The Definitive Guide to the ARM Cortex-M3(中文名:Cortex-M3 权威指南),虽然非官方,但很权威
下面,我们看看关于NVIC寄存器的描述,都在哪些手册里面有提到
在使用STM32F10x standard peripheral library写有关于stm32中断的程序的时候,需要开启某个特定中断的控制位,除了对应外设的寄存器之外,还需要设置NVIC的相关寄存器的对应位。例如:
/******  STM32 specific Interrupt Numbers *********************************************************/
WWDG_IRQn                  = 0,      /*!< Window WatchDog Interrupt                            */
快乐英语网
PVD_IRQn                    = 1,      /*!< PVD through EXTI Line detection Interrupt            */
TAMPER_IRQn                = 2,      /*!< Tamper Interrupt                                    */
RTC_IRQn                    = 3,      /*!< RTC global Interrupt                                */
FLASH_IRQn                  = 4,      /*!< FLASH global Interrupt                              */
RCC_IRQn                    = 5,      /*!< RCC global Interrupt                                */
EXTI0_IRQn                  = 6,      /*!< EXTI Line0 Interrupt                                */
EXTI1_IRQn                  = 7,      /*!< EXTI Line1 Interrupt                                */
EXTI2_IRQn                  = 8,      /*!< EXTI Line2 Interrupt                                */
EXTI3_IRQn                  = 9,      /*!< EXTI Line3 Interrupt                                */
EXTI4_IRQn                  = 10,    /*!< EXTI Line4 Interrupt                                */
DMA1_Channel1_IRQn          = 11,    /*!< DMA1 Channel 1 global Interrupt                      */
DMA1_Channel2_IRQn          = 12,    /*!< DMA1 Channel 2 global Interrupt                      */
DMA1_Channel3_IRQn          = 13,    /*!< DMA1 Channel 3 global Interrupt                      */
DMA1_Channel4_IRQn          = 14,    /*!< DMA1 Channel 4 global Interrupt                      */
DMA1_Channel5_IRQn          = 15,    /*!< DMA1 Channel 5 global Interrupt                      */
上海口译培训班DMA1_Channel6_IRQn          = 尖锋教育16,    /*!< DMA1 Channel 6 global Interrupt                      */
DMA1_Channel7_IRQn          = 17,    /*!< DMA1 Channel 7 global Interrupt                      */
NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
而NVIC_Init()这个函数:
/**
* @brief  Initializes the NVIC peripheral according to the specified
*        parameters in the NVIC_InitStruct.
* @param  NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure that contains
*        the configuration information for the specified NVIC peripheral.
* @retval None
英文*/
voidups是什么意思 NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
{
uint32_t tmppriority = 0x00, tmppre = 0x00, tmpsub = 0x0F;
/* Check the parameters */
asrt_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
asrt_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority)); 
外语学院排名
asrt_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
重要的英文if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
{
/* Compute the Corresponding IRQ Priority --------------------------------*/   
tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08;
tmppre = (0x4 - tmppriority);
tmpsub = tmpsub >> tmppriority;
tmppriority = (uint32_t)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
tmppriority |=  NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
tmppriority = tmppriority << 0x04;
NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority;
/* Enable the Selected IRQ Channels --------------------------------------*/
NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] =
(uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);
}
el
{
done是什么意思/* Disable the Selected IRQ Channels -------------------------------------*/

本文发布于:2023-05-20 14:48:59,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/115912.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   需要   对应   中断   相关
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图