ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
801244 Топик полностью
SciFi (11.12.2017 15:41, просмотров: 100) ответил Evgeny_CD на Хардкорненько :)
Местами ещё и фееричненько. Ручное разматывание цикла: void arm_max_q15( q15_t * pSrc, uint32_t blockSize, q15_t * pResult, uint32_t * pIndex) { q15_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ uint32_t blkCnt, outIndex, count; /* loop counter */ count = 0u; outIndex = 0u; out = *pSrc++; blkCnt = (blockSize - 1u) >> 2u; while(blkCnt > 0u) { maxVal1 = *pSrc++; maxVal2 = *pSrc++; if(out < maxVal1) { out = maxVal1; outIndex = count + 1u; } maxVal1 = *pSrc++; if(out < maxVal2) { out = maxVal2; outIndex = count + 2u; } maxVal2 = *pSrc++; if(out < maxVal1) { out = maxVal1; outIndex = count + 3u; } if(out < maxVal2) { out = maxVal2; outIndex = count + 4u; } count += 4u; blkCnt--; } blkCnt = (blockSize - 1u) % 4u; while(blkCnt > 0u) { maxVal1 = *pSrc++; if(out < maxVal1) { out = maxVal1; outIndex = blockSize - blkCnt; } blkCnt--; } *pResult = out; *pIndex = outIndex; }
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้