⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iirarma_stm32.s

📁 STM32F10x DSP库 V1.0.1
💻 S
字号:
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* File Name          : iirarma_stm32.s
* Author             : MCD Application Team
* Version            : V1.0.1
* Date               : 10/20/2008
* Description        : This source file contains IIR ARMA filter source code
********************************************************************************
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

  SECTION .text:CODE(2)

  PUBLIC  iirarma_stm32

#define y       R0    /* Assigned to output array y[]  */
#define x       R1    /* Assigned to input array x[]   */
#define h2      R2    /* Assigned to coefficients h2[] */
#define h1      R3    /* Assigned to coefficients h1[] */

#define ar_a    R4
#define ar_b    R5
#define ar_c    R6
#define ar_d    R7

#define val_ny  R12   /* number of output samples */


/*******************************************************************************
* Function Name  : iirarma_stm32
* Description    : IIR order ARMA 16-bit filter
* Input          : - y: Output array .
*                  - x: Input array 
*                  - h2: AutoRegressive part Filter Coefficients
*                  - h1: Moving Average part Filter Coefficients
*                  - ny: the number of output samples
* Output         : None
* Return         : None
*******************************************************************************/
/* void iirarma_stm32(void *y, void *x,  short *h2, short *h1, int ny); */
iirarma_stm32:
           STMDB       SP!, {R4-R7}
           LDR         R12, [SP, #+16]
;
           CMP      val_ny, #+1           ;if val_ny==1
           BEQ     done_for_now          ;go to done_for_now
;
acc_five_data:
           LDRSH    ar_a, [h2, #+0]
           LDRSH    ar_b, [x, #+8]
           LDRSH    ar_c, [h2, #+2]
           LDRSH    ar_d, [x, #+6]
;
           SUBS     val_ny, val_ny, #+1     ;decrement val_ny
           MUL      ar_c, ar_d, ar_c
           MLA      ar_a, ar_b, ar_a, ar_c
           LDRSH    ar_b, [h1, #+2]
           LDRSH    ar_c, [y, #+6]
           MUL      ar_b, ar_c,ar_b
           LDRSH    ar_c, [x, #+4]
           SUB      ar_a, ar_a, ar_b
           LDRSH    ar_b, [h2, #+4]
           MLA      ar_a, ar_c, ar_b, ar_a
           LDRSH    ar_b, [h1, #+4]
           LDRSH    ar_c, [y, #+4]
           MUL      ar_b, ar_c, ar_b
           LDRSH    ar_c, [x, #+2]
           SUB      ar_a, ar_a, ar_b
           LDRSH    ar_b, [h2, #+6]
           MLA      ar_a, ar_c, ar_b, ar_a
           LDRSH    ar_b, [h1, #+6]
           LDRSH    ar_c, [y, #+2]
           MUL      ar_b, ar_c, ar_b
           LDRSH    ar_c, [x], #+2
           SUB      ar_a, ar_a, ar_b
           LDRSH    ar_b, [h2, #+8]
           MLA      ar_a, ar_c, ar_b, ar_a
           LDRSH    ar_b, [h1, #+8]
           LDRSH    ar_c, [y, #+0]
           MUL      ar_b, ar_c, ar_b
           SUB      ar_a, ar_a, ar_b
           ASR      ar_a, ar_a, #+15
           STRH     ar_a, [y, #+8]
           ADD      y, y, #+2
           BNE      acc_five_data
;
done_for_now:
           LDMIA    SP!, {R4-R7}
           BX       LR               ;; return
           END

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -