[技术问答] M031硬件除法器 ,HDIV_Div(45000,13) 偶尔会出错,大家遇到过吗

[复制链接]
 楼主| panghongfei 发表于 2022-11-12 17:07 | 显示全部楼层 |阅读模式
本帖最后由 panghongfei 于 2022-11-12 17:14 编辑

uint CountAvg_Advalue(uint *ADV,uchar Times)
{
    uchar i;
   uint Avg=0;
    uint CountAll=0;
    for(i=0; i<Times; i++) CountAll=CountAll+ADV;                 //统计总数
    //Avg = CountAll/(Times);
    Avg=HDIV_Div(CountAll, Times);                    //使用硬件除法器,求平均值
    return Avg;
}
23490636f63e235241.png
小明的同学 发表于 2022-11-14 14:40 | 显示全部楼层
没遇到过,第一次听说这个事情。回头找个板子试试也来发帖。
et009 发表于 2022-11-14 19:29 | 显示全部楼层
uint CountAll=0;  可能累加後大於 0x8000 後 传入HDIV_Div(int32_t x, int16_t y)
变成负数造成。可改成 uint32_t CountAll=0; 试试看。
jasontu 发表于 2022-11-15 11:58 | 显示全部楼层
同意et009的说明,使用者要检查输入的范围才是
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

50

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部