summaryrefslogtreecommitdiff
path: root/bsp/acm32/acm32f0x0-nucleo/libraries/HAL_Driver/Src/HAL_DIV.c
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;
}