Hallo zusammen, habe ein Problem beim Debuggen der Firmware auf einem STM32F051 µC. IDE ist CooCox 1.7.6, Toolchain ARM GCC 4.9 2015q2 und der Debug Adapter ST Link V2. Bisher laufen ein paar Hardware PWMs mit TIM 1, TIM 2 und TIM 3 auf dem Controller. Nun wollte ich einen weiteren Timer nutzen (TIM 16) der mit ca 300 Hz läuft um ein paar 7 Segment Displays zu multiplexen. Die Firmware scheint auch problemlos zu laufen. Die LEDs faden wie sie sollen und die 7 Segment Anzeige tut auch. Das Problem besteht beim Debuggen. Bis zum Init vom NVIC für den Timer ist alles normal. Also ich kann z.B. mit step into in Funktionen gehen und single steppen. Nach dem Init vom NVIC sobald der Update Interrupt vom Timer scharf ist lande ich bei jedem single step in der Timer ISR. Was das debuggen von anderen Funktionen unmöglich macht. Was mir etwas komisch vorkommt ist der Eintrag 3 im Function Backtrace (Siehe Bild). Ist das normal oder kann das ein Hardfault sein ? Verstehe nicht ganz woher das kommt. Auf einem STM32F407 nutze ich mit dem selben Debug Adapter / IDE ebenfalls Timer mit ISRs und da läuft alles wie es soll. Ist das vielleicht auch eine Einstellungssache, also irgendwelche compiler flags oder so was ? Ich nutze diesen Code zum Init vom Timer und NVIC:
1 | TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure; |
2 | |
3 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16, ENABLE); |
4 | |
5 | TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1; |
6 | TIM_TimeBase_InitStructure.TIM_Period = 40000; |
7 | TIM_TimeBase_InitStructure.TIM_Prescaler = 3; |
8 | TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up; |
9 | |
10 | TIM_TimeBaseInit(TIM16, &TIM_TimeBase_InitStructure); |
11 | |
12 | TIM_ITConfig(TIM16,TIM_IT_Update, ENABLE); |
13 | |
14 | TIM_Cmd(TIM16, ENABLE); |
15 | |
16 | |
17 | NVIC_InitTypeDef NVIC_InitStructure; |
18 | |
19 | NVIC_InitStructure.NVIC_IRQChannel = TIM16_IRQn; |
20 | NVIC_InitStructure.NVIC_IRQChannelPriority = 0; |
21 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; |
22 | NVIC_Init(&NVIC_InitStructure); |
Hat jemand eine Idee was da schiefläuft oder Tipps was ich machen kann um normal zu debuggen ? Vielen Dank schonmal und viele Grüße, Stefan