打印
[其他ST产品]

STM32 库函数学习 TIM篇

[复制链接]
487|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c17|  楼主 | 2023-1-30 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

HAL_StatusTypeDef HAL_TIM_Base_Init (TIM_HandleTypeDef * htim)

这个函数属于定时器使用基本的定时功能的初始化函数,它的输入参数为自定义的定时器指针。

<p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">TIM_HandleTypeDef TIM3_Handler;      //定时器句柄 </font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">void TIM3_Init(u16 arr,u16 psc)</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">{  </font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    TIM3_Handler.Instance=TIM3;                          //通用定时器3</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    TIM3_Handler.Init.Prescaler=psc;                     //分频</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    TIM3_Handler.Init.Period=arr;                        //自动装载值</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    HAL_TIM_Base_Init(&TIM3_Handler);</font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    </font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">    </font></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; overflow: auto hidden; line-height: 24px !important;"><font color="#4d4d4d" face="-apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif, SimHei, SimSun">}</font></p>


使用特权

评论回复
评论
c17 2023-1-30 16:34 回复TA
———————————————— 版权声明:本文为CSDN博主「似是燕归来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/s2014201506/article/details/117838129 
沙发
c17|  楼主 | 2023-1-30 16:28 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_DeInit (TIM_HandleTypeDef * htim)

复位指定的定时器。使用方法和第一个一样。

使用特权

评论回复
板凳
c17|  楼主 | 2023-1-30 16:28 | 只看该作者
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)

定时器初始化的回调函数,用来处理优先级和开启定时器时钟等作用。它会自动被第一个函数调用。
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
    if(htim->Instance==TIM3)
        {
                __HAL_RCC_TIM3_CLK_ENABLE();            //使能TIM3时钟
                HAL_NVIC_SetPriority(TIM3_IRQn,1,3);    //设置中断优先级,抢占优先级1,子优先级3
                HAL_NVIC_EnableIRQ(TIM3_IRQn);          //开启ITM3中断   
        }  
}

使用特权

评论回复
地板
c17|  楼主 | 2023-1-30 16:28 | 只看该作者
void HAL_TIM_Base_MspDeInit (TIM_HandleTypeDef * htim)

复位指定的定时器的回调函数。使用方法和第三个一样。

使用特权

评论回复
5
c17|  楼主 | 2023-1-30 16:29 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_Start (TIM_HandleTypeDef * htim)

开启定时器的计时功能,打开定时器。

TIM_HandleTypeDef TIM3_Handler;      //定时器句柄
HAL_TIM_Base_Start(&TIM3_Handler);  //开启定时器

使用特权

评论回复
6
c17|  楼主 | 2023-1-30 16:30 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_Stop (TIM_HandleTypeDef * htim)

关闭定时器使用方法和函数5一样,功能相反。

使用特权

评论回复
7
c17|  楼主 | 2023-1-30 16:30 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_Start_IT (TIM_HandleTypeDef * htim)

开启定时器的中断功能,这个中断指的是定时器计数更新中断,最常见的中断。
 HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断:TIM_IT_UPDATE    

使用特权

评论回复
8
c17|  楼主 | 2023-1-30 16:31 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT (TIM_HandleTypeDef * htim)

关闭定时器的中断功能,使用方法和函数七一样。

使用特权

评论回复
9
c17|  楼主 | 2023-1-30 16:31 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA (TIM_HandleTypeDef * htim, uint32_t * pData, uint16_t Length)

使用DMA的方式进行计数。

使用特权

评论回复
10
c17|  楼主 | 2023-1-30 16:32 | 只看该作者
HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA (TIM_HandleTypeDef * htim)

停止DMA的方式进行计数

使用特权

评论回复
11
c17|  楼主 | 2023-1-30 16:32 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Init (TIM_HandleTypeDef * htim)

STM32输出比较模式初始化函数。
HAL_TIM_OC_Init(&htim3)

使用特权

评论回复
12
c17|  楼主 | 2023-1-30 16:33 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Start (TIM_HandleTypeDef * htim, uint32_t Channel)

开启输出比较功能,输出比较常见于PWM功能和输出翻转信号。输出GPIO定时翻转信号的时候需要注意频率为最终50%。如果需要配置一个50毫秒的GPIO翻转信号,需要将定时器的一次完整计数周期设置为100毫秒。

使用特权

评论回复
13
c17|  楼主 | 2023-1-30 16:33 | 只看该作者
  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 24000-1;
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim3.Init.Period = 1000-1;                 //一百毫秒
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
  {
    Error_Handler();
  }
.............
  sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
  sConfigOC.Pulse = 500-1;  //50毫秒计时
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_OC_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM3_Init 2 */
        HAL_TIM_OC_Start(&htim3,TIM_CHANNEL_4);

使用特权

评论回复
14
c17|  楼主 | 2023-1-30 16:34 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Stop (TIM_HandleTypeDef * htim, uint32_t Channel)

停止输出比较功能,输入参数和函数12一样。

使用特权

评论回复
15
c17|  楼主 | 2023-1-30 16:35 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Start_IT (TIM_HandleTypeDef * htim, uint32_t Channel)

打开输出比较模式的中断,使用中断的方式使用比较输出的模式。他的对应中断回调函数 HAL_TIM_OC_DelayElapsedCallback。

使用特权

评论回复
16
c17|  楼主 | 2023-1-30 16:36 | 只看该作者
HAL_TIM_OC_Start_IT(&htim3,TIM_CHANNEL_4);
....
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim)
{
        if(htim == &htim3)
        {
                //操作逻辑
        }
}

使用特权

评论回复
17
c17|  楼主 | 2023-1-30 16:36 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Stop_IT (TIM_HandleTypeDef * htim, uint32_t Channel)

关闭输出比较模式的中断,使用方法和函数14一样。

使用特权

评论回复
18
c17|  楼主 | 2023-1-30 16:38 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA (TIM_HandleTypeDef * htim, uint32_t Channel, uint32_t *pData, uint16_t Length)

开启DMA模式的输出比较功能,此处的pData和长度,可以设置为数据数组为1和长度为1.

使用特权

评论回复
19
c17|  楼主 | 2023-1-30 16:38 | 只看该作者
uint32_t pdata[1];
HAL_TIM_OC_Start_DMA(&htim3,TIM_CHANNEL_4,pdata,1);

使用特权

评论回复
20
c17|  楼主 | 2023-1-30 16:41 | 只看该作者
HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA (TIM_HandleTypeDef * htim, uint32_t Channel)

关闭DMA模式的输出比较功能。关闭DMA不需要属于四个参数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

c17

39

主题

311

帖子

1

粉丝