1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > STM32定时器做时钟源输出基于CubeMx

STM32定时器做时钟源输出基于CubeMx

时间:2023-08-21 02:22:58

相关推荐

STM32定时器做时钟源输出基于CubeMx

目录

前言

CubeMX配置

开始函数

改变频率

改占空比

结论

前言

调试使用的评估板:/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__)))

结论

通过上面配置与调用,达到了输出时钟源信号功能。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。