一、建立工程
这里不做详细解释,网上有很多教程。
二、移植DSP库
1、打开FPU,需要在编译器的Options中配置相关参数。因为STM32H7系列是双精度的FPU,所以这里选择Double Precision。
2、配置预处理符号:
为了方便各位大侠拷贝,这里贴出来具体的配置语句:ARM_MATH_CM7,__CC_ARM,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING
3、移植DSP库进入代码中,我这里使用封装成lib库的dsp库,各位也可以选择源码xx.c
加入工程后的样子
注:DSP库 各位可以在st官网下载!
4、加入头文件的链接
到这里为止,所有的配置都弄好了,接下来准备撸代码!
关于加入固件库更基础知识这里不做介绍,各位大侠可以在网上找到很多教程。
三、编写定时器驱动
void TIM5_Int_Init(uint32 arr,uint16 psc)
{
volatile TIM_HandleTypeDef TIM5_Handler; //定时器句柄
__HAL_RCC_TIM5_CLK_ENABLE(); //使能TIM5时钟
TIM5_Handler.Instance = TIM5; //通用定时器5
TIM5_Handler.Init.Prescaler = psc; //分频
TIM5_Handler.Init.Period = arr; //自动装载值
TIM5_Handler.Init.CounterMode = TIM_COUNTERMODE_UP; //向上计数器
TIM5_Handler.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; //时钟分频因子
TIM5_Handler.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; //使能自动预装载
HAL_TIM_Base_DeInit((TIM_HandleTypeDef*)&TIM5_Handler);
HAL_TIM_Base_Init((TIM_HandleTypeDef*)&TIM5_Handler);
HAL_TIM_Base_Start((TIM_HandleTypeDef *)&TIM5_Handler);
}
四、编写测试程序
1、测试的功能函数
#define APB1_TIME5_CLK_MHZ (uint8)(200)
#define TIME5_ARR_VALUE (uint32) (60000)
#define TIME_BUFF_NUM (uint8)(10)