Hallo zusammen,
ich mache gerade meine ersten Schritte mit einem Cortex-M3 (CPU-Kern in
einem SmartFusion FPGA) und versteh da was nicht:
Ich will die CPU in der Hauptschleife schlafen legen und zyklisch über
einen Timer aufwecken, um ein festes Zeitraster zu erhalten (das hab ich
schon erfolgreich auf AVR, PIC & Co gemacht).
1 | main()
|
2 | {
|
3 | ...
|
4 | while( 1 )
|
5 | {
|
6 | while (stTimer1Flag_u8 == 0)
|
7 | {
|
8 | __WFI();
|
9 | }
|
10 | stTimer1Flag_u8 = 0;
|
11 | ...
|
12 | }
|
13 | }
|
14 |
|
15 | void Timer1_IRQHandler(void)
|
16 | {
|
17 | stTimer1Flag_u8 = 0x01;
|
18 | MSS_TIM1_clear_irq();
|
19 | }
|
Ohne das _WFI() funktioniert alles wie gewünscht: LEDs blinken, UART tut
usw.
Mit _WFI() stoppt die CPU und nichts geht mehr, auch der Timer-Interrupt
scheint nicht zu kommen.
Ich vermute grundlegenes ARM-Unwissen als Fehlerursache.
Hat jemand einen Tip?