测试代码如下
SysTick -> VAL = 0x00; //将定时器归零SysTick -> CTRL |= SysTick_CTRL_ENABLE_Msk; //开启定时器for(m0=1;m0<10000000;m0+=10000){//m1=100000+(m0);}dur=SysTick -> VAL; //将定时器归零dur=(~dur)&0x00ffffff;SysTick -> CTRL &= ~SysTick_CTRL_ENABLE_Msk; //关闭定时器
修改m0 m1的数据类型,得到运行一千次的系统时钟数量,扣除基础循环所用时间 21 pulse,就得到了单次计算所需要的时钟周期。
加法 | 减法 | 乘法 | 除法 | 开根号 | |
---|---|---|---|---|---|
uint32_t | 3 | 3 | 7 | 12 | |
uint64_t | 17 | 17 | 37 | 140 | |
float | 95 | 95 | 63 | 224 | |
uint16_t | 3 | 3 | 7 | 7 | |
uint8_t |