STM32?ж??????NVIC????????
//====================================================
// STM32 ?ж??????NVIC ????????
// netjob 2008-8-1
//====================================================
STM32?ж??????NVIC????????
???????????????????
Cortex-M3 ??????
Joseph Yiu ??
???? ??
???????
//CM3 ?? ???240???ж?(??????ж?д??IRQs)?????? ????????? IRQ CHANAELx(?ж??????x)
????ж?????????????ж???????? ??Ψ?????? ?ж??????????? ??.
????CM3??? ????ж?????????????? 256 ????????????
?? 256???ж????? ?????????(preempt) ???????
???????????:
IRQ CHANAEL 0 ??? = 2 ?ж?????? WWDG ?????????ж?
IRQ CHANAEL 1 ??? = 0 ?ж?????? PVD ????EXTI??????????(PVD)?ж?
IRQ CHANAEL 3 ??? = 255 ?ж?????? RTC ?????(RTC)????ж?
IRQ CHANAEL 6 ??? = 10 ?ж?????? EXTI0 EXTI??0?ж?
.....
IRQ CHANAEL 239 ??? = (0
??????????????! ???????CM3 ?????????????
????о?????STM32??????????????ò?64?????????????8???ж?????
?? 64???ж???????( INT0 ?? INT63)???????????????????64···239????????
IRQ CHANAEL 0
??????
IRQ CHANAEL 63
??8???ж??????????ν????
?????????????? ??? ???ж????? ??????ж??????????????????????????? 8 λ???
??????? 256???????????????? ?????е? BIT7,IT6,BIT5 ??λ?????????????MSB??????
????3 ??λ???????????(MSB ????????????????8 ??????????0x00(???)??0x20??0x40??0x60??0x80??0xA0??0xC0 ???0xE0??)
????????????ж?????????????????????????? 0??255?????????
???????0x00(???)??0x20??0x40??0x60??0x80??0xA0??0xC0 ???0xE0??)
???????????:
IRQ CHANAEL 0 ??? = 0x20 ?ж?????? WWDG ?????????ж?
IRQ CHANAEL 1 ??? = 0x40 ?ж?????? PVD ????EXTI??????????(PVD)?ж?
IRQ CHANAEL 3 ??? = 0x20 ?ж?????? RTC ?????(RTC)????ж?
IRQ CHANAEL 6 ??? = 0xA0 ?ж?????? EXTI0 EXTI??0?ж?
.....
IRQ CHANAEL 63 ??? = ??0x00(???)??0x20??0x40??0x60??0x80??0xA0??0xC0 ???0xE0??)??
????????????????0?????3 ???????????0X20, ????????
// ????????????????????????????????????????С???????????IRQ #0???IRQ #3 ???????
???????л????? ??????????顿???????????????
??????????????????????????頓????????????????????????????????????
???????? 256?????? ????ж???????????????8λ???????????????????????????????????!
??????????????????????????????????????????
??????????? ??ó????ж????λ????????(AIRCR) ?е? 10??8 λ??3λ????????????????顿
??????????? ???????ж?????????????????????????????BIT7,BIT6,BIT5??λ?????????????
????????????Cortex-M3 ?????????110??? ?????????AIRCR??10??8 λ?????5?? ??
?????á???????????=??7??6???????????????=??5??0????
??????ж??????????????????BIT7,6,5, ??????????????? ??7??6??????5??????4-0 ????????
????????? IRQ0=0X20, IRQ3=0X20, ????? ??0 0 1 0 ???? bit7=0,bit6=0,bit5=1,bit4=0??
??????(IRQ0/IRQ3)?? ????????????=??7??6??????0?? ?????????ж????????????????
??????ж??????????????????ξ??????5???????????5???????????!
????????
// ????????????????????????????????????????С???????????IRQ #0???IRQ #3 ???????
????CM3??? ???ж????????ж????????????????ж??????????????? ?????? ???????????
???????????????
???????????????????????????????Cortex-M3 ?????????
???κ????????????λ??????!
???????
“2)?????????????????ж?????????????;”
???????????:
IRQ CHANAEL 0 ??? = 0x20 ?ж?????? WWDG ?????????ж?
IRQ CHANAEL 1 ??? = 0x40 ?ж?????? PVD ????EXTI??????????(PVD)?ж?
IRQ CHANAEL 3 ??? = 0x20 ?ж?????? RTC ?????(RTC)????ж?
IRQ CHANAEL 6 ??? = 0xA0 ?ж?????? EXTI0 EXTI??0?ж?
???? 0 ?????3 ??????????????????????0 ?????????3 ????????Щ??
??0 ?????1 ????????????????
о???λ??????????????? ?? 0?? ???? ??7??1??????????????????0??????????????
????????MSB????? 8 ??????????0x00(???)??0x20??0x40??0x60??0x80??0xA0??0xC0 ???0xE0??)
????????????????????????????????????? ?? 0????????λ??????????!
???????????????????????????ж????? ?????PD.3,??PD.4????????????????ж???????????0X20??
??????????????飬????????????ж?????
/* Enable the EXTI3 Interrupt on PD.3 */
STM32_Nvic_Regs->Priority[9].all=0x20; // ?ж????????? 0X20
STM32_Nvic_Regs->Enable[0].bit.INT9=1; // ??INT9 ?ж? IRQ9
/* Enable the EXTI4 Interrupt on PD.4 */
STM32_Nvic_Regs->Priority[10].all=0x20; // ?ж????????? 0X20
STM32_Nvic_Regs->Enable[0].bit.INT10=1; // ??INT10 ?ж? IRQ10
?????????ж??????????

????admin ?????????2019-07-31