⑴ 单片机做乘除法运算与浮点运算相比耗时吗
是的,对于没有浮点运算单元FPU的单片机,一般就是采用这种方式来计算。
例如原本要计算的数据是个电压值,在0~3.3V之间,通过12位采样之后得到0~4095的采样值AD_value。按照AD_value*2/5计算之后得到的就是0~1638内的结果,再反向换算为电压0~1.32V。
⑵ 单片机中,怎么处理除数为零的问题
单片机中,处理除数为零的问题解决方法如下:
当CCR寄存器的DIV_0_TRP位被配置0时,即使发生除以0操作也不会触发异常,只有当该位被置1前提下,当发生除以0操作时才触发异常事件并产生相应中断。测试代码很简单,就是下面截图中的几行,简单的闪灯操作,里面夹了一句除法操作。SCB->CCR被赋值0x00000210即置位了DIV_0_TRP,当被赋值0x00000200时对其进行清零。经过测试,当我们置位上面CCR寄存器的DIV_0_TRP位,在发生除以0操作时就会进入HardFault中断,同时被除数的结果【Result】即商变为0.