MM32SPIN2x 电机专用MCU功能特色——硬件除法器与硬件开方

   上一章节中已经教大家如何使用MM32SPIN2x的PWM控制模控制功能,本章节将与大家一起配置硬件除法器和硬件开方器。
    除法和开方是非常消耗时间的运算,而在电机控制算法中,乘除法和平方根运算在电机运算中使用频率较高。为了提高MCU的工作效率,MM32SPIN2x了内嵌硬件32bit硬件除法器和32bit硬件乘法器,能自动执行有符号或32位整数乘除法和开根号运算。硬件运算大大提升了应用程序的效率,减少了代码运算量,相比软件它们对于特定问题计算速度更快,位宽更大。
   下面和大家一起配置如何使用硬件除法器和硬件开方进行运算。
    硬件除法单元包括六个32位寄存器,四个数据寄存器分别为被除数、除数、商和余数,以及一个控制寄存器和一个状态寄存器。在使用时,先打开硬件除法器时钟使能,然后配置控制寄存器(HWDIV_CR)选择是否使能除零溢出中断和有无符号除法,然后往被除数寄存器和除数寄存器中写入数据,每一次写入除数寄存器,会自动触发除法运算,在运算结束后,结果会写入到商和余数寄存器里。如果在运算未结束前读商寄存器、余数寄存器或者状态寄存器,读操作会被暂停,直到运算结束才会返回运算结果。特别的,如果除数为零,会产生溢出中断标志位。寄存器详细定义请参考MM32SPIN2x_p用户手册。

硬件除法器初始化配置如下:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_HWDIV, ENABLE); //使能除法器时钟
HWDIV->DIVCON |= (DIV_UNSIGN ); //无符号除法,不使能除零中断

为了验证硬件除法器的效率,在主函数中分别使用硬件除法器和软件除法器进行16次除法运算,不使用while是为了避免多余的指令占用时间。
主函数如下:
u32 DVD_data[32] = {
0x12345678,0x9876554 ,0x9822346 ,0x98734662,
0x000001 ,0xFFFFFFFF,0x11111111,0x22222222,
0x33333333,0x78645323,0x4399039 ,0x4367464 ,
0x42345678,0x9873554 ,0x9822346 ,0x98734662,
0x100001 ,0x1FFFFFFF,0x11511111,0x22422222,
0x53333333,0x78645323,0x4399039 ,0x4367464 ,
0x140001 ,0x11FFFFFF,0x12111111,0x29422222,
0x53333333,0x78644323,0x4369039 ,0x4767464 ,
};
u32 DVS_data[32] = {
0x11,0x22,0x33,0x44,
0x55,0x66,0x77,0x88,
0x99,0xaa,0xbb,0xcc,
0xdd,0xee,0xff,0xee,
0xdd,0xcc,0xbb,0xaa,
0x99,0x88,0x77,0x66,
0x55,0x44,0x33,0x22,

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值