Hallo, ich versuche jetzt schon verzweifelt seit Tagen einen einfachen Timer zum laufen zu bringen. Ich nutze keil µVision5 und habe ein Board mit einem STM32F103 ARM Prozessor. Timer Initialisierung: void SetupTimer (void) { //Timer RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_TimeBaseInitTypeDef timInitStruct; timInitStruct.TIM_CounterMode = TIM_CounterMode_Up; timInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; timInitStruct.TIM_Prescaler = 1000; timInitStruct.TIM_Period = timer_aktiv; TIM_TimeBaseInit(TIM2, &timInitStruct); TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); // Enable interrupt TIM2 NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_Init(&NVIC_InitStructure); } In folgender Zeile unterringelt er das 'TIM"_IRQn' und sagt use of undeclared idetifier... NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; An was kann das liegen? Was mache ich falsch? Bin für jede Hilfe dankbar. Grüße
Du hast die stm32f10x.h nicht inkludiert, oder die Definition des Makros für deinen Prozessor (STM32F10X_LD, STM32F10X_LD_VL, STM32F10X_MD, STM32F10X_MD_VL, STM32F10X_HD, STM32F10X_HD_VL, STM32F10X_XL, STM32F10X_CL) vergessen. Michael Maier schrieb: > TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); Hier schaltest du den Interrupt aus. Michael Maier schrieb: > NVIC_InitTypeDef NVIC_InitStructure; > NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; > NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; > NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; > > NVIC_Init(&NVIC_InitStructure); Du hast vergessen, das Feld "NVIC_IRQChannelCmd" in NVIC_InitStructure zu initialisieren. Der Interrupt wird somit zufällig entweder ein- oder ausgeschaltet. npn schrieb: > Das 'n' in IRQn ist stellvertretend für eine Zahl. Nein, das ist schon richtig so. Das 'n' deutet an, dass TIM2_IRQn die Nummer des Interrupts ist.
Dr. Sommer schrieb: > Du hast die stm32f10x.h nicht inkludiert, oder die Definition des Makros > für deinen Prozessor (STM32F10X_LD, STM32F10X_LD_VL, STM32F10X_MD, > STM32F10X_MD_VL, STM32F10X_HD, STM32F10X_HD_VL, STM32F10X_XL, > STM32F10X_CL) vergessen. Danke für die schnelle Antwort. Also die stm32f10x.h ist included also liegt es wahrscheinlich an den Makros. Wo muss ich diese einbinden, woher bekomm ich die und für was genau sind die gut?
Michael Maier schrieb: > Wo muss ich diese einbinden, woher bekomm ich die und für was genau sind > die gut? Die musst du auf der Compiler-Kommandozeile mit übergeben, beim GCC zB mit der "-D" Option. Wie man das in der µVision IDE eingibt weiß ich nicht. Indem du eines dieser Makros definierst, stellst du ein welchen STM32F103 genau du verwendest, da die kleine Unterschiede haben. In der Titelzeile vom Datenblatt vom STM32F103 steht zB so etwas: > Low-density performance line, ARM-based 32-bit MCU Das sagt dir, dass du STM32F10X_LD definieren musst (LD = Low Density). Schau in deinem Datenblatt nach, was für einen du hast.
Hab gefunden wo das einzustellen ist und hab wie im Datenblatt geschrieben HD auskommentiert. #if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) /* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */ /* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */ /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */ /* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */ #define STM32F10X_HD /*!< STM32F10X_HD: STM32 High density devices */ // #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */ /* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */ /* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */ #endif Der Fehler wird immer noch angezeit und zusätzlich habe ich 30 andere error-Meldungen... EDIT: OK die ursprüngliche Fehlermeldung ist doch weg. Danke dafür. Mal schauen wie ich das mit den anderen hinbekomme...
Fehlermeldungen sind als PDF angehängt falls jemand dazu etwas weiß. Bin relativ ratlos was ich machen soll.
Michael Maier schrieb: > Fehlermeldungen sind als PDF angehängt Die Menschheit ist wahrlich dem Untergang geweiht... wie kommt man nur auf so eine Idee?
Was ist das für eine Datei stm32f10x_map.h, wieso inkludierst du die, wo kommt die her? Teil der CMSIS oder Standard Peripheral Library von ST ist die jedenfalls nicht. Da ist wohl irgendwas mit deinem Project Setup in µVision kaputt. Michael Maier schrieb: > Hab gefunden wo das einzustellen ist und hab wie im Datenblatt > geschrieben HD auskommentiert. Ich würde lieber nicht in den Header Files von ST rumspielen, sondern das lieber als globales Makro direkt dem Compiler mitgeben...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.