举报
void delay_1ms(uint32_t count) { delay =count; while (0U != delay) { } 1 2 3 4 } void delay_decrement(void) { if(0U != delay) { delay--; } 1 2 3 4 } void SysTick_Init(void) { if(SysTick_Config(CLOCK_SYS_FREQ/1000U)) { while (1) { } } NVIC_SetPriority(SysTick_IRQn, 0x00U); 1 2 3 4 5 6 7 8 } void SysTick_Handler(void) { delay_decrement(); 1 }
void SinCosTest() { int i; int n = 10; volatile uint32_t start; float32_t res; float32_t fix = PI / 3.0; printf("test arm_cos_f32 tick:\r\n"); start = SysTick->VAL; for (i = 0; i < n; i++) { res = arm_cos_f32(PI * i / n); } PrintCostTicks(start); printf("test arm_sin_f32 tick:\r\n"); start = SysTick->VAL; for (i = 0; i < n; i++) { res = arm_sin_f32(PI * i / n); } PrintCostTicks(start); printf("test cos tick:\r\n"); start = SysTick->VAL; for (i = 0; i < n; i++) { res = cos(PI * i / n); } PrintCostTicks(start); printf("test sin tick:\r\n"); start = SysTick->VAL; for (i = 0; i < n; i++) { res = sin(PI * i / n); } PrintCostTicks(start); }
void FFTCalcu(void) { arm_cfft_instance_f32 s; switch (TEST_BUF_SIZE) { case 64: s = arm_cfft_sR_f32_len64; break; case 128: s = arm_cfft_sR_f32_len128; break; case 256: s = arm_cfft_sR_f32_len256; break; case 512: s = arm_cfft_sR_f32_len512; break; case 1024: s = arm_cfft_sR_f32_len1024; break; case 2048: s = arm_cfft_sR_f32_len4096; break; default: s = arm_cfft_sR_f32_len256; break; } arm_cfft_f32(&s,(float32_t *)&sComplexFFT,0,1); arm_cmplx_mag_f32((float32_t *)&sComplexFFT,harmanicFFT,TEST_BUF_SIZE / 2); }
void LPFFilter(float32_t *pSrc,float32_t *pDst,uint32_t blockSize) { uint32_t i; //初始化滤波器 arm_biquad_cascade_df1_init_f32(&sLPFFilter,LPF_STAGE,coeffLPF,stateLPF); //使用滤波器 arm_biquad_cascade_df1_f32(&sLPFFilter,pSrc,pDst,blockSize); for (i = 0; i < blockSize; i++) { *(pDst + i) *= scaleLPFCoeff; } }
uint32_t AtanCordic(uint32_t x,uint32_t y) { //写入CR寄存器 CORDIC->CR &= ~(CORDIC_CR_ENABLE_MASK | CORDIC_CR_START_MASK | CORDIC_CR_STARTMODE_MASK | CORDIC_CR_WORKMODE_MASK); CORDIC->CR |= CORDIC_CR_ENABLE(1) | CORDIC_CR_START(0) | CORDIC_CR_WORKMODE(0) | CORDIC_CR_STARTMODE(0); //CORDIC->CR = (uint32_t)0x00000008; //CORDIC_CR_ENABLE(1); //DY值写入 CORDIC->DYR = (uint32_t)y; //DZ写入 CORDIC->DZR = (uint32_t)0; //查询状态,等待空闲 while(CORDIC->SR == 1); //DX写入 CORDIC->DXR = (uint32_t)x; while (CORDIC->SR == 1); return CORDIC->RZR; }
void SinCosCordic(uint32_t x,uint32_t y,uint32_t z,uint32_t *reslutSin,uint32_t *resultCos) { CORDIC->CR = 0x0E; CORDIC->DXR = x; CORDIC->DYR = y; CORDIC->DZR = z; while(CORDIC->SR == 1); CORDIC->CR = 0x0F; while(CORDIC->SR == 1); *reslutSin = CORDIC->RYR; *resultCos = CORDIC->RXR; }
l63t89 发表于 2023-2-25 11:00 测试结论 该款MM32F5270与市场上使用较广的TI 28335频率相同,但运算性能、片内资源和可扩展性上均有较大的 ...
本版积分规则 发表回复 回帖后跳转到最后一页
时间类勋章
人才类勋章
发帖类勋章
等级类勋章
99
1009
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号