现在解决问题的方式是在复位中断中添加自定义代码#if __ARMVFP__ /* Enable access to Floating-point coprocessor. */
CPU_REG_NVIC_CPACR = CPU_REG_NVIC_CPACR_CP10_FULL_ACCESS | CPU_REG_NVIC_CPACR_CP11_FULL_ACCESS;
DEF_BIT_CLR(CPU_REG_SCB_FPCCR, DEF_BIT_31); /* Disable automatic FP register content */
DEF_BIT_CLR(CPU_REG_SCB_FPCCR, DEF_BIT_30); /* Disable Lazy context switch */
#endif
然后紧张中断延迟发布,这样在正常启动和复位启动都是正常的。出现的问题是在时钟中断中系统的OSTick中是正常的,在里面设置一个闪烁LED,和在一个任务中使用OSTimeDly(500u, OS_OPT_TIME_DLY, &err);延迟有一定的偏差且这个偏差是在累积的,时间长可以明显看到这个差值。我将OS_OPT_TIME_DLY修改为OS_OPT_TIME_PERIODIC也是一样的,问题是我只有一个任务的,这个不应该出现差值累计的。 |