STM32CubeMx笔记--P5_TIM3配置

本文档详细介绍了如何使用STM32CubeMx生成的HAL库,结合原子哥的STM32F4 HAL库案例,对STM32F103ZE的TIM3进行配置。通过修改stm32f1xx_hal_comf.h文件,启用TIM3,并在HAL_TIM_Base_MspInit()中开启TIM3时钟和中断。在TIM3_IRQHandler()中断服务函数中实现LED3的翻转。提供了完整的TIM3初始化函数TIM3_Init()和回调函数HAL_TIM_PeriodElapsedCallback()。代码示例可供参考和下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
一个有自己想法的小白,致力于出一套基于HAL库的STM32F103ZE系列案列,库来源于STM32CubeMx生成的LED的工程,详情参照P2和P3…

说明
芯片:STM32F103ZET6
底层库:STM32F1_HAL 库
魔改于:原子哥的STM32F4的HAL库案例(链接在P4),STM32CubeMx生成的LED的工程

本P在P4的工程下进行TIM3的配置

1. 注意!!!!!
修改: stm32f1xx_hal_comf.h中的TIM的使能,需要打开,一定要把此处的注释给去掉
在这里插入图片描述
2. TIM3配置方法如下:
文件:HAL_TIM3.c

#include "HAL_TIM3.h"
/**
  ******************************************************************************
  * @file           : HAL_TIM3.c
  * @attention
  作者:@Hwang
  魔改基于:原子哥的F407的HAL库+STM32CubeMx软件生产的库
  
  最后修改时间: 2021-10-25
  ******************************************************************************
    
 */

TIM_HandleTypeDef TIM3_Handler;      //定时器句柄 

//通用定时器3中断初始化
//arr:自动重装值。
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=定时器工作频率,单位:Mhz
//这里使用的是定时器3!(定时器3挂在APB1上,时钟为HCLK/2)
void TIM3_Init(uint16_t arr,uint16_t psc)
{  
    TIM3_Handler.Instance=TIM3;                          //通用定时器3
    TIM3_Handler.Init.Prescaler=psc;                     //分频系数
    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
    TIM3_Handler.Init.Period=arr;                        //自动装载值
    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
    HAL_TIM_Base_Init(&TIM3_Handler);
    
    HAL_TIM_Base_Start_IT(&TIM3_Handler); //使能定时器3和定时器3更新中断:TIM_IT_UPDATE   
}


//定时器底册驱动,开启时钟,设置中断优先级
//此函数会被HAL_TIM_Base_Init()函数调用
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中断   
	}
}


//定时器3中断服务函数
void TIM3_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM3_Handler);
}


//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim==(&TIM3_Handler))
    {
        LED3=!LED3;        //LED1反转
    }
}

文件:HAL_TIM3.h

#ifndef _HAL_TIM3_H
#define _HAL_TIM3_H
#include "main.h"


/**
  ******************************************************************************
  * @file           : HAL_TIM3.h
  * @attention
  作者:@Hwang
  魔改基于:原子哥的F407的HAL库+STM32CubeMx软件生产的库
  
  最后修改时间: 2021-10-25
  ******************************************************************************
    
 */


extern TIM_HandleTypeDef TIM3_Handler;      //定时器句柄 
 
void TIM3_Init(uint16_t arr,uint16_t psc);
#endif

3. 在main函数中进行初始化:
TIM3_Init(5000-1,7200-1);
周期:T=5000x7200 / 72M = 0.5s

工程链接:https://gitee.com/zh5mku/p5_-tim3.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Hwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值