NVIC
NVIC_PriorityGroup_3
NVIC_PriorityGroup_4
0-7 0-15
0-1 0
ÏÈÕ¼ÓÅÏȼ¶3λ ´ÓÓÅÏȼ¶1λ ÏÈÕ¼ÓÅÏȼ¶4λ ´ÓÓÅÏȼ¶0λ
1. Ñ¡ÖÐNVIC_PriorityGroup_0£¬Ôò²ÎÊýNVIC_IRQChannelPreemptionPriority¶ÔÖжÏͨµÀµÄÉèÖò»²úÉúÓ°Ïì¡£
2. Ñ¡ÖÐNVIC_PriorityGroup_4£¬Ôò²ÎÊýNVIC_IRQChannelSubPriority¶ÔÖжÏͨµÀµÄÉèÖò»²úÉúÓ°Ïì¡£
NVIC_IRQChannelCmd
¸Ã²ÎÊýÖ¸¶¨ÁËÔÚ³ÉÔ±NVIC_IRQChannelÖж¨ÒåµÄIRQͨµÀ±»Ê¹ÄÜ»¹ÊÇʧÄÜ¡£Õâ¸ö²ÎÊýȡֵΪENABLE»òÕßDISABLE¡£ Àý£º
NVIC_InitTypeDef NVIC_InitStructure; /* Configure the Priority Grouping with 1 bit */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
/* Enable TIM3 global interrupt with Preemption Priority 0 and Sub Priority as 2 */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure(&NVIC_InitStructure);
/* Enable USART1 global interrupt with Preemption Priority 1 and Sub Priority as 5 */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5; NVIC_InitStructure(&NVIC_InitStructure);
/* Enable RTC global interrupt with Preemption Priority 1 and Sub Priority as 7 */
NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7; NVIC_InitStructure(&NVIC_InitStructure);
/* Enable EXTI4 interrupt with Preemption Priority 1 and Sub Priority as 7 */
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 7; NVIC_InitStructure(&NVIC_InitStructure);
/* TIM3 interrupt priority is higher than USART1, RTC and EXTI4 interrupts priorities. USART1 interrupt priority is higher than RTC and EXTI4 interrupts priorities. RTC interrupt priority is higher than EXTI4 interrupt prioriy. */
ÒëÎÄÓ¢ÎÄÔ°æÎªUM0427 Oct. 2007 Rev 2, ÒëÎĽö¹©²Î¿¼£¬ÓëÓ¢Îİæ³åÍ»µÄ£¬ÒÔÓ¢ÎİæÎª×¼
NVIC
13.2.5 º¯ÊýNVIC_StructInit
Table 274. ÃèÊöÁ˺¯ÊýNVIC_StructInit Table 274. º¯ÊýNVIC_StructInit º¯ÊýÃû º¯ÊýÔÐÎ ¹¦ÄÜÃèÊö ÊäÈë²ÎÊý Êä³ö²ÎÊý ·µ»ØÖµ ÏȾöÌõ¼þ ±»µ÷Óú¯Êý NVIC_StructInit
void NVIC_StructInit (NVIC_InitTypeDef* NVIC_InitStruct) °ÑNVIC_InitStructÖеÄÿһ¸ö²ÎÊý°´È±Ê¡ÖµÌîÈë
NVIC_InitStruct£ºÖ¸Ïò½á¹¹NVIC_InitTypeDefµÄÖ¸Õ룬´ý³õʼ»¯ ÎÞ ÎÞ ÎÞ ÎÞ Table 275. ¸ø³öÁËNVIC_InitStruct¸÷¸ö³ÉÔ±µÄȱʡֵ¡£
Table 275. NVIC_InitStructȱʡֵ ³ÉÔ±
NVIC_IRQChannel NVIC_IRQChannelPreemptionPriority NVIC_IRQChannelSubPriority NVIC_IRQChannelCmd Àý£º
/* The following example illustrates how to initialize a NVIC_InitTypeDef structure */ NVIC_InitTypeDef NVIC_InitStructure; NVIC_StructInit(&NVIC_InitStructure);
ȱʡֵ 0x0 0 0 DISABLE
13.2.6 º¯ÊýNVIC_SETPRIMASK
Table 276. ÃèÊöÁ˺¯ÊýNVIC_SETPRIMASK Table 276. º¯ÊýNVIC_SETPRIMASKº¯ÊýÃû º¯ÊýÔÐÎ ¹¦ÄÜÃèÊö ÊäÈë²ÎÊý Êä³ö²ÎÊý ·µ»ØÖµ ÏȾöÌõ¼þ
£¨1£©£¨2£©£¨3£©
NVIC_SETPRIMASK void NVIC_SETPRIMASK(void) ʹÄÜPRIMASKÓÅÏȼ¶£ºÌáÉýÖ´ÐÐÓÅÏȼ¶ÖÁ0 ÎÞ ÎÞ ÎÞ ÎÞ
ÒëÎÄÓ¢ÎÄÔ°æÎªUM0427 Oct. 2007 Rev 2, ÒëÎĽö¹©²Î¿¼£¬ÓëÓ¢Îİæ³åÍ»µÄ£¬ÒÔÓ¢ÎİæÎª×¼
NVIC
±»µ÷Óú¯Êý __SETPRIMASK() 1. ¸Ãº¯ÊýÓÉ»ã±àÓïÑÔÊéд¡£
2. ¸Ãº¯ÊýÖ»Ó°Ïì×éÓÅÏȼ¶£¬²»Ó°Ïì´ÓÓÅÏȼ¶¡£
3. ÔÚÉèÖÃPRIMASK¼Ä´æÆ÷ǰ£¬½¨ÒéÔÚ´ÓΪÁËʹÄÜÒ»¸öÀýÍâÖÐÁíÒ»¸öÀýÍâ·µ»ØÊ±£¬Çå³ý¸Ã¼Ä´æÆ÷¡£ Àý£º
/* Enable the PRIMASK priority */ NVIC_SETPRIMASK();
13.2.7 º¯ÊýNVIC_RESETPRIMASK
Table 277. ÃèÊöÁ˺¯ÊýNVIC_RESETPRIMASK Table 277. º¯ÊýNVIC_RESETPRIMASKº¯ÊýÃû º¯ÊýÔÐÎ ¹¦ÄÜÃèÊö ÊäÈë²ÎÊý Êä³ö²ÎÊý ·µ»ØÖµ ÏȾöÌõ¼þ ±»µ÷Óú¯Êý NVIC_Init
void NVIC_RESETPRIMASK(void) ʧÄÜPRIMASKÓÅÏȼ¶ ÎÞ ÎÞ ÎÞ ÎÞ
__RESETPRIMASK() £¨1£©
1. ¸Ãº¯ÊýÓÉ»ã±àÓïÑÔÊéд¡£ Àý£º
/* Disable the PRIMASK priority */ NVIC_RESETPRIMASK();
13.2.8 º¯ÊýNVIC_SETFAULTMASK
Table 278. ÃèÊöÁ˺¯ÊýNVIC_SETFAULTMASK Table 278. º¯ÊýNVIC_SETFAULTMASKº¯ÊýÃû º¯ÊýÔÐÎ ¹¦ÄÜÃèÊö ÊäÈë²ÎÊý Êä³ö²ÎÊý ·µ»ØÖµ ÏȾöÌõ¼þ ±»µ÷Óú¯Êý £¨1£©£¨2£©£¨3£©
NVIC_SETFAULTMASK void NVIC_SETFAULTMASK(void) ʹÄÜFAULTMASKÓÅÏȼ¶£ºÌáÉýÖ´ÐÐÓÅÏȼ¶ÖÁ-1 ÎÞ ÎÞ ÎÞ ÎÞ
__SETFAULTMASK()
ÒëÎÄÓ¢ÎÄÔ°æÎªUM0427 Oct. 2007 Rev 2, ÒëÎĽö¹©²Î¿¼£¬ÓëÓ¢Îİæ³åÍ»µÄ£¬ÒÔÓ¢ÎİæÎª×¼
NVIC
1. ¸Ãº¯ÊýÓÉ»ã±àÓïÑÔÊéд¡£
2. ¸Ãº¯ÊýÖ»Ó°Ïì×éÓÅÏȼ¶£¬²»Ó°Ïì´ÓÓÅÏȼ¶¡£
3. FAULTMASKÖ»ÓÐÔÚÖ´ÐÐÓÅÏȼ¶ÖµÐ¡ÓÚ-1µÄÇé¿öϲÅÄܱ»ÉèÖã¬ÉèÖÃFAULTMASK½«ËüµÄÖ´ÐÐÓÅÏȼ¶ÌáÉýµ½HardFAULTµÄ¼¶±ð¡£Ã¿µ±´Ó³ýNMIÖ®ÍâµÄÀýÍâÖзµ»Ø£¬FAULTMASK»á±»×Ô¶¯Çå³ý¡£ Àý£º
/* Enable the FAULTMASK priority */ NVIC_SETFAULTMASK();
13.2.9 º¯ÊýNVIC_RESETFAULTMASK
Table 279. ÃèÊöÁ˺¯ÊýNVIC_ RESETFAULTMASK Table 279. º¯ÊýNVIC_ RESETFAULTMASKº¯ÊýÃû º¯ÊýÔÐÎ ¹¦ÄÜÃèÊö ÊäÈë²ÎÊý Êä³ö²ÎÊý ·µ»ØÖµ ÏȾöÌõ¼þ ±»µ÷Óú¯Êý £¨1£©
NVIC_RESETFAULTMASK void NVIC_RESETFAULTMASK(void) ʧÄÜFAULTMASKÓÅÏȼ¶ ÎÞ ÎÞ ÎÞ ÎÞ
__RESETFAULTMASK() 1. ¸Ãº¯ÊýÓÉ»ã±àÓïÑÔÊéд¡£ Àý£º
/* Enable the PRIMASK priority */ NVIC_RESETPRIMASK();
13.2.10 º¯ÊýNVIC_BASEPRICONFIG
Table 280. ÃèÊöÁ˺¯ÊýNVIC_ BASEPRICONFIG Table 280. º¯ÊýNVIC_ BASEPRICONFIGº¯ÊýÃû º¯ÊýÔÐÎ ¹¦ÄÜÃèÊö ÊäÈë²ÎÊý Êä³ö²ÎÊý ·µ»ØÖµ ÏȾöÌõ¼þ ±»µ÷Óú¯Êý £¨1£©£¨2£©£¨3£©
NVIC_ BASEPRICONFIG
void NVIC_BASEPRICONFIG(u32 NewPriority) ¸Ä±äÖ´ÐÐÓÅÏȼ¶´ÓN£¨×îµÍ¿ÉÉèÖÃÓÅÏȼ¶£©ÌáÉýÖÁ1 NewPriority£ºÖ´ÐÐÓÅÏȼ¶µÄÐÂÓÅÏȼ¶Öµ ÎÞ ÎÞ ÎÞ
__BASEPRICONFIG()
ÒëÎÄÓ¢ÎÄÔ°æÎªUM0427 Oct. 2007 Rev 2, ÒëÎĽö¹©²Î¿¼£¬ÓëÓ¢Îİæ³åÍ»µÄ£¬ÒÔÓ¢ÎİæÎª×¼