2016-07-20 12 views
0

so bat mich mein Freund, meine eigene Implementierung für die obige Funktion NVIC_Enable_IRQ (CAN1_RX0_IRQn) zu schreiben; um den Empfang von Dosen zu unterbrechen.Funktionsweise der NVIC-Funktion NVIC_EnableIRQ (CAN1_RX0_IRQn);

Anfangs dachte ich, es ist unmöglich zu Recht, solche Umsetzung ..

könnte jemand mir bitte erklären, wie das Register mit NVIC zugeordnet, wo ich direkt den gewünschten Wert gehen und ändern, so dass es keine Notwendigkeit der Durchführung von oben ist Funktions- und CAN-Empfangs-Interrupt ist aktiviert.

diese Linie NVIC_EnableIRQ(CAN1_RX0_IRQn); i aus Beispiel Code kopiert in STM32F Beispielcode von CAN gegeben

Antwort

3

Alles was mit beginnt NVIC_ Teil der CMSIS Bibliothek von ARM versorgt ist, die ARM-Kern einzurichten (die der MCU unabhängig ist Hersteller). Du willst dich nicht mit ihnen anlegen, also solltest du sie besser benutzen.

Im CMSIS core_cm4.h (für einen Cortex M4), können Sie finden:

__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) 
{ 
    NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); 
} 

Nun, wenn Sie NVIC_EnableIRQ nicht anrufen möchten oder wenn Sie die CMSIS nicht verwenden möchten Nun, viel Glück, Sie müssen die ARM Core-Dokumentation lesen, um zu überprüfen, welche Adressen Sie ändern müssen. Die ARM-Kerndokumentation finden Sie auf der ARM- oder Keil-Website. Zum Beispiel könnten Sie auf solche Links nützlich für den Cortex M4 finden:

https://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php http://www.keil.com/dd/docs/datashts/arm/cortex_m4/r0p1/dui0553a_cortex_m4_dgug.pdf

+0

kann ich kopieren Sie einfach den ganzen NVIC Körper in meinen Code .. dann wird es funktionieren oder nicht? – user143252

+0

Sie müssten auch die Definition/Deklaration der relevanten Strukturen kopieren. –

+0

Ok danke, ich möchte nur Interrupt für CAN-Protokoll aktivieren ... Hilfe benötigt – user143252

Verwandte Themen