久久精品国产精品国产一区,少妇扒开毛毛自慰喷水,国产精品无码电影在线观看 ,久久天天躁夜夜躁狠狠85麻豆

思澈科技軟件開發(fā)工具包  2.20
FFT

HAL FFT 模塊提供抽象的軟件接口操作硬件FFT模塊,實現(xiàn)定點數(shù)的FFT和DCT變換

Note
SF32LB55x不支持FFT
SF32LB58x不支持DCT

詳細(xì)的API說明參考 FFT .

使用HAL FFT

首先調(diào)用 HAL_FFT_Init 初始化HAL_FFT, 需要在 FFT_HandleTypeDef 中指定使用的FFT硬件模塊(即FFT實例),F(xiàn)FT實例個數(shù)隨芯片有所不同,如SF32LB58x系列有兩個FFT實例,::hwp_fft1和::hwp_fft2,而 SF32LB56x系列則只有一個FFT實例,即::hwp_fft1。初始化只需做一次,之后就可以調(diào)用 HAL_FFT_StartFFT 、::HAL_FFT_StartDCT 等函數(shù)處理數(shù)據(jù)。

Note
源和目的地址需要保證4字節(jié)對齊,支持源和目的地址相同
在初始化HAL_FFT之前需先執(zhí)行HAL_RCC_EnableModule使能相應(yīng)的FFT模塊

例如,

static FFT_HandleTypeDef fft_handle;
void init_fft(void)
{ // Initialize driver and enable FFT IRQ
HAL_NVIC_SetPriority(FFT1_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(FFT1_IRQn);
HAL_RCC_EnableModule(RCC_MOD_FFT1);
fft_handle.Instance = hwp_fft1 ;
HAL_FFT_Init(&fft_handle);
}

輪詢模式

static uint32_t input_data[512];
static uint32_t output_data[512];
void fft_example_polling(void)
{
/* 初始化 */
memset(&config, 0, sizeof(config));
/* 512點16比特復(fù)數(shù)FFT */
config.bitwidth = FFT_BW_16BIT;
config.fft_length = FFT_LEN_512;
config.ifft_flag = 0;
config.rfft_flag = 0;
config.input_data = input_data;
config.output_data = output_data;
res = HAL_FFT_StartFFT(&fft_handle, &config);
}

中斷模式

volatile static uint8_t fft_done_flag;
static uint32_t input_data[512];
static uint32_t output_data[512];
/* FFT1 IRQ ISR in vector table */
void FFT1_IRQHandler(void)
{
HAL_FFT_IRQHandler(&fft_handle);
}
static void fft_done(FFT_HandleTypeDef *fft)
{
fft_done_flag = 1;
}
void fft_example_it(void)
{
/* 初始化 */
memset(&config, 0, sizeof(config));
/* 512點16比特的復(fù)數(shù)FFT */
config.bitwidth = FFT_BW_16BIT;
config.fft_length = FFT_LEN_512;
config.ifft_flag = 0;
config.rfft_flag = 0;
config.input_data = input_data;
config.output_data = output_data;
fft_done_flag = 0;
fft_handle.CpltCallback = fft_done;
res = HAL_FFT_StartFFT_IT(&fft_handle, &config);
/* wait for interrupt, fft_done_flag is changed to 1 in fft_done */
while (0 == fft_done_flag)
{
}
}
HAL_RCC_EnableModule
void HAL_RCC_EnableModule(RCC_MODULE_TYPE module)
Enable module if it's disabled.
__FFT_HandleTypeDef
Definition: bf0_hal_fft.h:77
HAL_FFT_Init
HAL_StatusTypeDef HAL_FFT_Init(FFT_HandleTypeDef *fft)
Init FFT Accelerator.
FFT_ConfigTypeDef::fft_length
FFT_FFTLengthTypeDef fft_length
Definition: bf0_hal_fft.h:129
FFT_ConfigTypeDef::output_data
void * output_data
Definition: bf0_hal_fft.h:137
HAL_FFT_StartFFT
HAL_StatusTypeDef HAL_FFT_StartFFT(FFT_HandleTypeDef *fft, FFT_ConfigTypeDef *config)
Start FFT in synchronous mode.
FFT_ConfigTypeDef::ifft_flag
uint8_t ifft_flag
Definition: bf0_hal_fft.h:133
__FFT_HandleTypeDef::CpltCallback
void(* CpltCallback)(struct __FFT_HandleTypeDef *fft)
Definition: bf0_hal_fft.h:79
__FFT_HandleTypeDef::Instance
FFT_TypeDef * Instance
Definition: bf0_hal_fft.h:78
FFT_ConfigTypeDef
Definition: bf0_hal_fft.h:122
HAL_FFT_StartFFT_IT
HAL_StatusTypeDef HAL_FFT_StartFFT_IT(FFT_HandleTypeDef *fft, FFT_ConfigTypeDef *config)
Start FFT in asynchronous mode.
FFT_ConfigTypeDef::rfft_flag
uint8_t rfft_flag
Definition: bf0_hal_fft.h:131
HAL_NVIC_SetPriority
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Set the priority of an interrupt.
HAL_StatusTypeDef
HAL_StatusTypeDef
HAL Status structures definition.
Definition: bf0_hal_def.h:74
HAL_NVIC_EnableIRQ
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
FFT_ConfigTypeDef::input_data
void * input_data
Definition: bf0_hal_fft.h:135