// 完整示例代码
#include "stm32g4xx.h"

void CORDIC_Init(void) {
    RCC->AHB2ENR |= RCC_AHB2ENR_CORDICEN;
    CORDIC->CSR = CORDIC_CSR_FUNC_SIN | CORDIC_CSR_NARGS_2 | CORDIC_CSR_NRES_2 |
                  CORDIC_CSR_PRECISION_15 | CORDIC_CSR_ARGSIZE_16 | CORDIC_CSR_RESSIZE_16;
}

uint32_t CORDIC_Calc(int16_t angle_q15) {
    while (CORDIC->CSR & CORDIC_CSR_RDY);
    CORDIC->WDATA = (uint32_t)angle_q15 << 16;
    while ((CORDIC->CSR & CORDIC_CSR_RRDY) == 0);
    return CORDIC->RDATA;
}