我是靠谱客的博主 幸福小霸王,最近开发中收集的这篇文章主要介绍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. 代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部