目录
前言
CubeMX配置
开始函数
改变频率
改占空比
结论
前言
调试使用的评估板:https://item.taobao.com/item.htm?spm=a230r.1.14.17.432b1562F8z658&id=612002664117&ns=1&abbucket=14#detail
作者再调试AD5933过程中,需要输出100Hz~100KHz扫频信号;
外部时钟16MHz情况下设置起始频点100HZ,会导致程序卡一会,排查下来是I2C卡在了校准增益这个地方;
然而起始频点设置1KHz 就不会有问题;那么问题应该可以缩小范围,开始翻手册找关于起始频点的介绍;
再用户手册“UG-364”中有关于这个的介绍,
只需要将MCK降低就可以了;
于是我们开始基于cube MX进行配置;
CubeMX配置
开始函数
使用的时候需要调用一下开始函数;
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); //AD5933时钟
改变频率
如果想改变频率,调用接口
/*** @brief Set the TIM Prescaler on runtime.* @param __HANDLE__ TIM handle.* @param __PRESC__ specifies the Prescaler new value.* @retval None*/
#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__))
/*** @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.* @param __HANDLE__ TIM handle.* @param __AUTORELOAD__ specifies the Counter register new value.* @retval None*/
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \do{ \(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \(__HANDLE__)->Init.Period = (__AUTORELOAD__); \} while(0)
改占空比
如果想改占空比,调用接口
/*** @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function.* @param __HANDLE__ TIM handle.* @param __CHANNEL__ TIM Channels to be configured.* This parameter can be one of the following values:* @arg TIM_CHANNEL_1: TIM Channel 1 selected* @arg TIM_CHANNEL_2: TIM Channel 2 selected* @arg TIM_CHANNEL_3: TIM Channel 3 selected* @arg TIM_CHANNEL_4: TIM Channel 4 selected* @arg TIM_CHANNEL_5: TIM Channel 5 selected* @arg TIM_CHANNEL_6: TIM Channel 6 selected* @param __COMPARE__ specifies the Capture Compare register new value.* @retval None*/
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
结论
通过上面配置与调用,达到了输出时钟源信号功能。