我是靠谱客的博主 幸福小霸王,最近开发中收集的这篇文章主要介绍stm32cubeMX+FreeRTOS(3)——主从定时器0. 序1. 主从定时器简介2. 参考表3. 配置4. 代码,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
0. 序
打算用freeRTOS重构一个项目。
从定时器开始吧,使用主从定时器主要是为了精准控制电机。
经过测试,发现主从定时器与freertos无关,类似定时器,主从定时器只与定时器配置相关,因此这片文章里面不分析rtos相关代码。
1. 主从定时器简介
复位模式
门控模式:测试过使用其他模式不生效,用gated模式可以正常计数
触发模式
2. 参考表
3. 配置
主定时器使用TIM3
重点注意TIM3,Pulse,这个是占空比 800/(1599+1)=50%。
预分频PreScaler只对频率,也就是电机快慢有影响,不影响PWM脉冲个数。
重装载值通过通过调节占空比影响无刷电机步数。对步进电机没有影响,步进电机只要脉冲个数。
从定时器使用TIM4,根据表选择ITR2
重点通过预分频和重装载值计数,(24+1)*(399+1)= 10000步,精准计数。
别忘了开中断
4. 代码
在while(1)主循环前面加一下代码,开启定时器
HAL_TIM_Base_Start_IT(&htim4);
HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_1);
写回调函数,可以写在it中断里面,也可以写在main文件里面
我写在这里,貌似是Cube自动生成的代码块
if(htim==(&htim4))
{
if(__HAL_TIM_GET_FLAG(&htim4, TIM_FLAG_CC1) != RESET)
{
__HAL_TIM_CLEAR_FLAG(&htim4, TIM_FLAG_CC1);
HAL_TIM_PWM_Stop_IT(&htim3, TIM_CHANNEL_1);
HAL_TIM_Base_Stop_IT(&htim4);
// HAL_GPIO_TogglePin(DIR1_GPIO_Port, DIR1_Pin);
// __HAL_TIM_SET_AUTORELOAD(&htim4,399);
// __HAL_TIM_SET_COUNTER(&htim4,0);
// HAL_TIM_Base_Start_IT(&htim4);
// HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_1);
}
}
最后
以上就是幸福小霸王为你收集整理的stm32cubeMX+FreeRTOS(3)——主从定时器0. 序1. 主从定时器简介2. 参考表3. 配置4. 代码的全部内容,希望文章能够帮你解决stm32cubeMX+FreeRTOS(3)——主从定时器0. 序1. 主从定时器简介2. 参考表3. 配置4. 代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复