blob: 711aa74ebfa572c2b99323853fd959fb0b892bc0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include "HAL_DIV.h"
//Computes q = b div c and a = b mod c
//cDigits must be 1, and *c < 0xffffffff
void hardwareNN_Div_q32(UINT32 *q,UINT32 *a,UINT32 *b,UINT32 bDigits,UINT32 *c,UINT32 cDigits)
{
UINT32 * p;
int i;
DIV->REMAIN = 0;
DIV->DIVISOR = *c;
for(i = (bDigits-1); i >= 0 ; i -- )
{
p = (UINT32*) (b + i);
DIV->DIVIDENED = *p;
while((DIV->STATUS&0x01)!=0x01);
DIV->STATUS = 0x01;
(*(q+i)) = (UINT32)DIV->QUOTIENT;
}
(*a) = DIV->REMAIN;
}
|