测试这样一个函数时 void APP_Filter(){a=1000*20/30;}的执行时间时发现在3.7us,好像有点长于是屏蔽掉乘除法继续测试函数执行时间变为了1.5us,继续屏蔽,变成了这样a=1000*20///30,执行时间为1.7us(一个乘法执行时间0.2us有点长),但是除法执行时间更长2us,查看汇编发现了一点小问题如图这好像不是一条汇编指令,打开万能的百度,果然有问题,cortex m0内核不支持硬件除法,C语言编写的除法是编译器自动调用库函数的结果,所花费的时间在几十至上百个周期。
又好奇看了下M3的内核是不是也不带除法指令,M3的内核带有硬件除法,在M3内核的单片机中可以放心的使用除法,可是不管乘法除法其执行时间还是很长的,最快捷方便的方法还是使用移位<< >>