We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I don't know, why I can't use float in my timer_callback function.
If I want to use a float variable in my timer callback function, the timer stops always after one round. Although I use a periodic timer. Do anyone know, how can I resolve this problem?
Have you thought of initilizing the FPU ? In the LPC_Open library code (fpu_init.c) their is a function:
/* Early initialization of the FPU */ void fpuInit(void) { // from arm trm manual: // ; CPACR is located at address 0xE000ED88 // LDR.W R0, =0xE000ED88 // ; Read CPACR // LDR R1, [R0] // ; Set bits 20-23 to enable CP10 and CP11 coprocessors // ORR R1, R1, #(0xF << 20) // ; Write back the modified value to the CPACR // STR R1, [R0] volatile uint32_t *regCpacr = (uint32_t *) LPC_CPACR; volatile uint32_t *regMvfr0 = (uint32_t *) SCB_MVFR0; volatile uint32_t *regMvfr1 = (uint32_t *) SCB_MVFR1; volatile uint32_t Cpacr; volatile uint32_t Mvfr0; volatile uint32_t Mvfr1; char vfpPresent = 0; Mvfr0 = *regMvfr0; Mvfr1 = *regMvfr1; vfpPresent = ((SCB_MVFR0_RESET == Mvfr0) && (SCB_MVFR1_RESET == Mvfr1)); if (vfpPresent) { Cpacr = *regCpacr; Cpacr |= (0xF << 20); *regCpacr = Cpacr; // enable CP10 and CP11 for full access } }