STM32F4的DSP库

环境配置

1. CUBEMX 中勾选生成工程时添加所有库
2. Keil 中宏定义:,__FPU_PRESENT=1,__TARGET_FPU_VFP,ARM_MATH_CM4,__CC_ARM
3. Keil 中添加DSP库位置:../Drivers/CMSIS/DSP/Include
4. 添加lib文件的lf后缀到工程的core文件夹下
5. 函数使用时包含头文件:#include "arm_math.h"
6. 编译工程

函数使用

官方介绍:地址在keil的包里面

构建矩阵

介绍:
typedef struct
{
uint16_t numRows;     // 矩阵行数.
uint16_t numCols;     // 矩阵列数
float32_t *pData;     // 矩阵地址
} arm_matrix_instance_f32


使用:
1. 创建数据源数组,申明矩阵类型
float32_t pDataA[9] = {1.1f, 1.1f, 2.1f, 2.1f, 3.1f, 3.1f, 4.1f, 4.1f, 5.1f};
arm_matrix_instance_f32 pSrcA;

2. 使用函数转换
arm_mat_init_f32(&pSrcA, 3,3, pDataA);

3. 读取数据
pSrcA.pData[0]

矩阵转置

介绍:

arm_status 	arm_mat_trans_f32 (
			const arm_matrix_instance_f32 *pSrc, 
			arm_matrix_instance_f32 *pDst)

 
arm_status 	arm_mat_trans_f64 (
			const arm_matrix_instance_f64 *pSrc, 
			arm_matrix_instance_f64 *pDst)

矩阵加、减法

介绍:
C = A + B
C = A - B
arm_status arm_mat_add_f32(

  		const arm_matrix_instance_f32 * pSrcA,

  		const arm_matrix_instance_f32 * pSrcB,

		arm_matrix_instance_f32 * pDst)


使用:
1. 创建A、B、C矩阵
2. 调用函数 arm_mat_add_f32(&A, &B, &C)  或者 arm_mat_sub_f32(&A, &B, &C);
3. 从C中获得结果

矩阵与矩阵的乘法

arm_status arm_mat_mult_f16	(	
			const arm_matrix_instance_f16 * 	pSrcA,
			const arm_matrix_instance_f16 * 	pSrcB,
			arm_matrix_instance_f16 * 	pDst 
			)

arm_status arm_mat_mult_f32	(	
			const arm_matrix_instance_f32 * 	pSrcA,
			const arm_matrix_instance_f32 * 	pSrcB,
			arm_matrix_instance_f32 * 	pDst 
			)
arm_status arm_mat_mult_f64	(	
			const arm_matrix_instance_f64 * 	pSrcA,
			const arm_matrix_instance_f64 * 	pSrcB,
			arm_matrix_instance_f64 * 	pDst 
			)		

矩阵与数字的乘法

arm_status arm_mat_scale_f16	(	
			const arm_matrix_instance_f16 * 	pSrc,
			float16_t 	scale,
			arm_matrix_instance_f16 * 	pDst 
			)	
arm_status arm_mat_scale_f32	(	
			const arm_matrix_instance_f32 * 	pSrc,
			float32_t 	scale,
			arm_matrix_instance_f32 * 	pDst 
			)	

向量乘法

void 	arm_mat_vec_mult_f16 (
			const arm_matrix_instance_f16 *pSrcMat, 
			const float16_t *pVec, 
			float16_t *pDst)

 
void 	arm_mat_vec_mult_f32 (
			const arm_matrix_instance_f32 *pSrcMat,
			const float32_t *pVec, 
			float32_t *pDst)

矩阵求逆

介绍:
1. 32位浮点矩阵求逆
arm_status arm_mat_inverse_f32(

  		const arm_matrix_instance_f32 * pSrc,

  		arm_matrix_instance_f32 * pDst)

        
2. 64位浮点矩阵求逆
arm_status arm_mat_inverse_f64(

  		const arm_matrix_instance_f64 * pSrc,

        arm_matrix_instance_f64 * pDst)



你可能感兴趣的:(STM32,几何学,stm32,dsp,矩阵)