楼主,在V3.3.0新库中没有V2.0.3中文件""的函数void NVIC_SystemHandlerPriorityConfig(u32 SystemHandler, u8 SystemHandlerPreemptionPriority, u8 SystemHandlerSubPriority);这个函数可以设置
/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */
BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */
UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */
SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */
DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */
PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */
SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */
的优先级,如果用库函数V3.3.0中的函数void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);只能设置外部中断的优先级,而不能设置Cortex-M3内核中的中断的优先级,原因是他们的中断优先级寄存器地址不同,外部中断使用Interrupt Priority Registers,地址:0xE000E400-0xE000E41F;内核中断(包括SysTick_IRQn)使用System Handler Priority Registers,地址:0xE000ED18, 0xE000ED1C , 0xE000ED20,详细的资料需要查阅ARM公司的Cortex-M3手册的Nested Vectored Interrupt Controller章节。我正在修改V2.0.3的NVIC函数,使其与V3.3.0兼容,马上就快改好了,有些寄存器ARM公司的定义和ST公司的定义不同,所以要改改。还有提醒你,V3.3.0的函数比V2.0.3的函数功能少点,所以如果你想使用V2.0.3的函数,那就去修改使其两个库兼容。 |