Other Parts Discussed in Thread: C2000WARE
1.目前是程序中需要使用到乘法,但乘法结果会超过原本变量的范围,请问怎么转换?
volatile uint16_t inv_VbusInst;
volatile uint16_t inv_VbusAvg;
上面两个变量是结构体inv_var中的两个变量,
if(inv_var.inv_VbusInst>15){
inv_var.inv_VbusAvg =(uint16_t)( ( ( (uint32_t)inv_var.inv_VbusInst-10 ) *62 ) >>8);
}
计算的语句如下:
inv_var.inv_VbusAvg=(inv_var.inv_VbusInst-10 )*62>>8;
当inv_var.inv_VbusInst=2000时发现(inv_var.inv_VbusInst-10 )*6结果大于uint16_t 数据的最大值65536,请问这时乘法的结果是自动为uint16_t 类型还是保持原结果不变?
2.数据强制转换
(uint32_t)inv_var.inv_VbusInst因为原本inv_var.inv_VbusInst为uint16_t类型这样的操作在计算过程是几个指令周期?
3.在debug中发现断点数量无法超过两个?请问能否设置多个断点数量?在debug中有没有运行时间提示(我想查看代码从一个位置到另一位置的执行时间)?
4.IQ问题
IQ的_IQmpy(A,B),IQsin(A),_IQ(float F)指令周期分别是多少?