stm32定时器引脚分布,定时器2~7、9~14基本配置

1.定时器引脚分布

2.stm32定时器2~7、9~14基本配置:

tim.h

#ifndef __TIM_H
#define __TIM_H
#include "stm32f4xx_hal.h"
#include "led.h"  
#include "sys.h" 
/*
*
*TIM2
*
*/
extern u8 TIM2_flag1;		//定时器标志位
void TIM2_Init(u16 arr,u16 psc);
/*
*
*TIM3
*
*/
//通过改变TIM3->CCR2的值来改变占空比,从而控制LED0的亮度
extern TIM_HandleTypeDef TIM3_Handler;	// TIM_HandleTypeDef 结构体变量
#define LED1_PWM_VAL TIM3->CCR2  
extern uint16_t TIM3_flag1;			//Tim3定时器标志位
extern int TIM3_flag2;					//Tim3定时器标志位
extern int TIM3_flag3;					//Tim3定时器标志位
extern int TIM3_flag4;					//Tim3定时器标志位
void TIM3_Init(u16 arr,u16 psc);
/*
*
*TIM4
*
*/
extern u8 TIM4_flag1;		//定时器标志位
void TIM4_Init(u16 arr,u16 psc);	//初始化

/*
*
*TIM5
*
*/
extern u8 TIM5_flag1;		//定时器标志位
void TIM5_Init(u16 arr,u16 psc);
/*
*
*TIM6
*
*/
extern u8 TIM6_flag1;		//定时器标志位
void TIM6_Init(u16 arr,u16 psc);
/*
*
*TIM7
*
*/
extern u8 TIM7_flag1;		//定时器标志位
extern u8 TIM7_flag2;		//定时器标志位
void TIM7_Init(u16 arr,u16 psc);
/*
*
*TIM9
*
*/
extern u8 TIM9_flag1;		//定时器标志位
void TIM9_Init(u16 arr,u16 psc);

#define GENERAL_TIMx                        TIM9
#define GENERAL_TIM_RCC_CLK_ENABLE()        __HAL_RCC_TIM9_CLK_ENABLE()
#define GENERAL_TIM_RCC_CLK_DISABLE()       __HAL_RCC_TIM9_CLK_DISABLE()
#define GENERAL_TIM_GPIO_RCC_CLK_ENABLE()   __HAL_RCC_GPIOE_CLK_ENABLE();

#define GENERAL_TIM_IRQ                     TIM1_BRK_TIM9_IRQn
#define GENERAL_TIM_INT_FUN                 TIM1_BRK_TIM9_IRQHandler

#define GENERAL_TIM_CH2_PORT                GPIOE
#define GENERAL_TIM_CH2_PIN                 GPIO_PIN_6

//通用定时器TIM9~TIM11由APB2时钟提供故为168MHz,而TIM12~TIM14为84MHz
#define GENERAL_TIM_PRESCALER           1999  // 实际时钟频率为:84KHz
// 定义定时器周期,当定时器开始计数到BASIC_TIMx_PERIOD值是更新定时器并生成对应事件和中断
#define GENERAL_TIM_PERIOD              255  
/* 扩展变量 ------------------------------------------------------------------*/
extern TIM_HandleTypeDef TIM9_Handler;
extern uint8_t indexWave[];
/* 函数声明 ------------------------------------------------------------------*/
void GENERAL_TIMx_Init(void);

/*
*
*TIM10
*
*/
extern u8 TIM10_flag1;		//定时器标志位
void TIM10_Init(u16 arr,u16 psc);
/*
*
*TIM11
*
*/
extern u8 TIM11_flag1;		//定时器标志位
void TIM11_Init(u16 arr,u16 psc);
/*
*
*TIM12
*
*/
extern u8 TIM12_flag1;		//定时器标志位
void TIM12_Init(u16 arr,u16 psc);
/*
*
*TIM13
*
*/
extern u8 TIM13_flag1;		//定时器标志位
void TIM13_Init(u16 arr,u16 psc);
/*
*
*TIM14
*
*/
extern u8 TIM14_flag1;		//定时器标志位
void TIM14_Init(u16 arr,u16 psc);
#endif 

tim.c

#include "tim.h" 

/*
*
*TIM2
*
*/
u8 TIM2_flag1;		//定时器标志位
TIM_HandleTypeDef TIM2_Handler;	//结构体变量
/*
*
*TIM3
*
*/
uint16_t TIM3_flag1;		//定时器标志位
TIM_HandleTypeDef TIM3_Handler;	//结构体变量
/*
*
*TIM4
*
*/
u8 TIM4_flag1;		//定时器标志位
TIM_HandleTypeDef TIM4_Handler;	// TIM_HandleTypeDef 结构体变量
/*
*
*TIM5
*
*/
u8 TIM5_flag1;		//定时器标志位
TIM_HandleTypeDef TIM5_Handler;      //定时器句柄 
/*
*
*TIM6
*
*/
u8 TIM6_flag1;		//定时器标志位
TIM_HandleTypeDef TIM6_Handler;      //定时器句柄 
/*
*
*TIM7
*刷新串口屏;判断串口3接收标志
*/
u8 TIM7_flag1;		//定时器标志位
TIM_HandleTypeDef TIM7_Handler;      //定时器句柄 
extern vu16 USART3_RX_STA;
/*
*
*TIM9
*
*/
u8 TIM9_flag1;		
TIM_HandleTypeDef TIM9_Handler;
/* LED亮度等级 PWM表 */
uint8_t indexWave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,107,143,191,205,255};
/*
*
*TIM10
*
*/
u8 TIM10_flag1;		
TIM_HandleTypeDef TIM10_Handler; 
	
/*
*
*TIM11
*
*/
u8 TIM11_flag1;		
TIM_HandleTypeDef TIM11_Handler; 
	
/*
*
*TIM12
*
*/
u8 TIM12_flag1;		
TIM_HandleTypeDef TIM12_Handler; 
	
/*
*
*TIM13
*
*/
u8 TIM13_flag1;		
TIM_HandleTypeDef TIM13_Handler; 
	
/*
*
*TIM14
*
*/
u8 TIM14_flag1;		
TIM_HandleTypeDef TIM14_Handler; 

/***************************************************************
*
*定时器底层驱动,开启时钟,设置中断优先级
*回调函数,定时器中断服务函数调用
*
****************************************************************/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM2)
	{
		__HAL_RCC_TIM2_CLK_ENABLE();           
		HAL_NVIC_SetPriority(TIM2_IRQn,2,3);  
		HAL_NVIC_EnableIRQ(TIM2_IRQn);         
	}
	if(htim->Instance==TIM3)
	{
		__HAL_RCC_TIM3_CLK_ENABLE();           
		HAL_NVIC_SetPriority(TIM3_IRQn,3,4);  
		HAL_NVIC_EnableIRQ(TIM3_IRQn);         
	}
	if(htim->Instance==TIM4)
	{
		__HAL_RCC_TIM4_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM4_IRQn, 4,5);
		HAL_NVIC_EnableIRQ(TIM4_IRQn);
	}
	if(htim->Instance==TIM5)
	{
		__HAL_RCC_TIM5_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM5_IRQn, 5,6);
		HAL_NVIC_EnableIRQ(TIM5_IRQn);
	}
	if(htim->Instance==TIM6)
	{
		__HAL_RCC_TIM6_CLK_ENABLE();
		HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 6,7);
		HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);		
	}
	if(htim->Instance==TIM7)
	{
		__HAL_RCC_TIM7_CLK_ENABLE();					// 开启时钟
		HAL_NVIC_SetPriority(TIM7_IRQn, 7,8);	// 配置抢占优先级,有16级抢占优先级
		HAL_NVIC_EnableIRQ(TIM7_IRQn);
	}
	
	if(htim->Instance==TIM9)
	{
		__HAL_RCC_TIM9_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM1_BRK_TIM9_IRQn, 9,10);
		HAL_NVIC_EnableIRQ(TIM1_BRK_TIM9_IRQn);
	}
	if(htim->Instance==TIM10)
	{
		__HAL_RCC_TIM10_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 10,11);
		HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn);
	}
	if(htim->Instance==TIM11)
	{
		__HAL_RCC_TIM11_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn, 11,12);
		HAL_NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn);
	}
	if(htim->Instance==TIM12)
	{
		__HAL_RCC_TIM12_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM8_BRK_TIM12_IRQn, 12,13);
		HAL_NVIC_EnableIRQ(TIM8_BRK_TIM12_IRQn);
	}
	if(htim->Instance==TIM13)
	{
		__HAL_RCC_TIM13_CLK_ENABLE();	
		HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 13,14);
		HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn);
	}
	if(htim->Instance==TIM14)
	{
		__HAL_RCC_TIM14_CLK_ENABLE();					
		HAL_NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 14,15);
		HAL_NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn);
	}
}

//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim==(&TIM2_Handler))
	{
		TIM2_flag1++;
	}
	if(htim==(&TIM3_Handler))
	{
		TIM3_flag1++;
	}
	if(htim==(&TIM4_Handler))
	{
		TIM4_flag1++;
	}
	if(htim==(&TIM5_Handler))
	{
		TIM5_flag1++;
	}
	if(htim==(&TIM6_Handler))
	{
		TIM6_flag1++;
	}
	if(htim==(&TIM7_Handler))
	{
		TIM7_flag1++;
		TIM7_flag2++;	
	}
	if(htim==(&TIM9_Handler))
	{
		TIM9_flag1++;
	}
	if(htim==(&TIM10_Handler))
	{
		TIM10_flag1++;
	}
	if(htim==(&TIM11_Handler))
	{
		TIM11_flag1++;
		
	}
	if(htim==(&TIM12_Handler))
	{
		TIM12_flag1++;
	}
	if(htim==(&TIM13_Handler))
	{
		TIM13_flag1++;
	}
	if(htim==(&TIM14_Handler))
	{
		TIM14_flag1++;
	}
}

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

/***************************************************************
*
*
*TIM3
*
*
****************************************************************/
//通用定时器3中断初始化
//arr:自动重装值。
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=定时器工作频率,单位:Mhz
//这里使用的是定时器3!(定时器3挂在APB1上,时钟为HCLK/2)
void TIM3_Init(u16 arr,u16 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   
}

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

/***************************************************************
*
*
*TIM4
*
*
****************************************************************/
void TIM4_Init(u16 arr,u16 psc)
{  
	TIM4_Handler.Instance=TIM4;                         
	TIM4_Handler.Init.Prescaler=psc;                     //分频系数
	TIM4_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM4_Handler.Init.Period=arr;                        //自动装载值
	TIM4_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM4_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM4_Handler); //使能定时器和定时器更新中断
}
//定时器4中断服务函数
void TIM4_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM4_Handler);
}
/***************************************************************
*
*
*TIM5
*
*
****************************************************************/
void TIM5_Init(u16 arr,u16 psc)
{  
    TIM5_Handler.Instance=TIM5;                          
    TIM5_Handler.Init.Prescaler=psc;                     //分频系数
    TIM5_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
    TIM5_Handler.Init.Period=arr;                        //自动装载值
    TIM5_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
    HAL_TIM_Base_Init(&TIM5_Handler);
    
    HAL_TIM_Base_Start_IT(&TIM5_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM5_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM5_Handler);
}
/***************************************************************
*
*
*TIM6
*
*
****************************************************************/
/*************************************************************************************************
*	函 数 名:	TIM6_Int_Init
*	函数功能:	初始化TIM6
*	说    明:该函数中的代码由 cube 生成	 
*************************************************************************************************/
void TIM6_Init(u16 arr,u16 psc)
{  
    TIM6_Handler.Instance=TIM6;                          //通用定时器6
    TIM6_Handler.Init.Prescaler=psc;                     //分频系数
    TIM6_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
    TIM6_Handler.Init.Period=arr;                        //自动装载值
    TIM6_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
    HAL_TIM_Base_Init(&TIM6_Handler);
    
    HAL_TIM_Base_Start_IT(&TIM6_Handler); //使能定时器6和定时器6更新中断:TIM_IT_UPDATE   
}
//定时器6中断服务函数
void TIM6_DAC_IRQHandler(void)
{
    HAL_TIM_IRQHandler(&TIM6_Handler);
}
/***************************************************************
*
*
*TIM7
*用于判断串口3接收,刷新串口屏
*
****************************************************************/
void TIM7_Init(u16 arr,u16 psc)
{
		TIM7_Handler.Instance=TIM7;                          //通用定时器
    TIM7_Handler.Init.Prescaler=psc;                     //分频系数
    TIM7_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
    TIM7_Handler.Init.Period=arr;                        //自动装载值
    TIM7_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//时钟分频因子
    HAL_TIM_Base_Init(&TIM7_Handler);

    HAL_TIM_Base_Start_IT(&TIM7_Handler); //使能定时器和定时器更新中断:TIM_IT_UPDATE									 
}
//定时器7中断服务程序		    
void TIM7_IRQHandler(void)
{  	
	HAL_TIM_IRQHandler(&TIM7_Handler);
	
	USART3_RX_STA|=1<<15;	//标记接收完成
	__HAL_TIM_CLEAR_FLAG(&TIM7_Handler,TIM_EventSource_Update );       //清除TIM7更新中断标志  
	//TIM7->CR1&=~(1<<0);     			//关闭定时器 
} 

/***************************************************************
*
*
*TIM9
*
*
****************************************************************/
void TIM9_Init(u16 arr,u16 psc)
{  
	TIM9_Handler.Instance=TIM9;                         
	TIM9_Handler.Init.Prescaler=psc;                     //分频系数
	TIM9_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM9_Handler.Init.Period=arr;                        //自动装载值
	TIM9_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM9_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM9_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM1_BRK_TIM9_IRQHandler(void)
{
   HAL_TIM_IRQHandler(&TIM9_Handler);
}

/***************************************************************
*
*
*TIM10
*
*
****************************************************************/
void TIM10_Init(u16 arr,u16 psc)
{  
	TIM10_Handler.Instance=TIM10;                         
	TIM10_Handler.Init.Prescaler=psc;                     //分频系数
	TIM10_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM10_Handler.Init.Period=arr;                        //自动装载值
	TIM10_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM10_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM10_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM1_UP_TIM10_IRQHandler(void)
{
   HAL_TIM_IRQHandler(&TIM10_Handler);
}

/***************************************************************
*
*
*TIM11
*
*
****************************************************************/
void TIM11_Init(u16 arr,u16 psc)
{ 
	TIM11_Handler.Instance=TIM11;                         
	TIM11_Handler.Init.Prescaler=psc;                     //分频系数
	TIM11_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM11_Handler.Init.Period=arr;                        //自动装载值
	TIM11_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM11_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM11_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM1_TRG_COM_TIM11_IRQHandler(void)
{
  HAL_TIM_IRQHandler(&TIM11_Handler);
}

/***************************************************************
*
*
*TIM12
*
*
****************************************************************/
void TIM12_Init(u16 arr,u16 psc)
{  
	TIM12_Handler.Instance=TIM12;                         
	TIM12_Handler.Init.Prescaler=psc;                     //分频系数
	TIM12_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM12_Handler.Init.Period=arr;                        //自动装载值
	TIM12_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM12_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM12_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM8_BRK_TIM12_IRQHandler(void)
{
   HAL_TIM_IRQHandler(&TIM12_Handler);
}	 		
/***************************************************************
*
*
*TIM13
*
*
****************************************************************/
void TIM13_Init(u16 arr,u16 psc)
{  
	TIM13_Handler.Instance=TIM13;                         
	TIM13_Handler.Init.Prescaler=psc;                     //分频系数
	TIM13_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM13_Handler.Init.Period=arr;                        //自动装载值
	TIM13_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM13_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM13_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM8_UP_TIM13_IRQHandler(void)
{
   HAL_TIM_IRQHandler(&TIM13_Handler);
}
/***************************************************************
*
*
*TIM14
*
*
****************************************************************/
void TIM14_Init(u16 arr,u16 psc)
{  
	TIM14_Handler.Instance=TIM14;                         
	TIM14_Handler.Init.Prescaler=psc;                     //分频系数
	TIM14_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上计数器
	TIM14_Handler.Init.Period=arr;                        //自动装载值
	TIM14_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV2;//时钟分频因子
	HAL_TIM_Base_Init(&TIM14_Handler);
	
	HAL_TIM_Base_Start_IT(&TIM14_Handler); //使能定时器和定时器更新中断
}
//定时器中断服务函数
void TIM8_TRG_COM_TIM14_IRQHandler(void)
{
   HAL_TIM_IRQHandler(&TIM14_Handler);
}

	


main.h

#include "tim.h"
/***************************************************************************************************
*	函 数 名: main
*	入口参数: 无
*	返 回 值: 无
*	函数功能: 
*	说    明: 无
****************************************************************************************************/

int main(void)
{
	//((1+arr )/72M)*(1+psc )=((1+1999)/72M)*(1+35999)=1秒(1*10^6us)
	//TIM1_Init(2000-1,36000-1);	//1000ms,
	TIM2_Init(2000-1,36000-1);//500ms
	TIM3_Init(2000-1,36000-1);	//1000ms,
	TIM4_Init(2000-1,36000-1);	//1000ms,
	TIM5_Init(2000-1,36000-1);//1000ms,
	TIM6_Init(2000-1,36000-1);//1000ms,
	TIM7_Init(2000-1,36000-1);	//1000ms,
	//TIM8_Init(2000-1,36000-1);//1000ms,
	TIM9_Init(2000-1,36000-1);//1000ms,
	TIM10_Init(2000-1,36000-1);//1000ms,
	TIM11_Init(2000-1,36000-1);//1000ms,
	TIM12_Init(2000-1,36000-1);//1000ms,
	TIM13_Init(2000-1,36000-1);//1000ms,
	TIM14_Init(2000-1,36000-1);//1000ms,


    //随便挑两个测试下:
    while(1)
    {
        //TIM6
        if(TIM6_flag1>=1){
			LED1_ON;
		}
		if(TIM6_flag1>=2){
			LED1_OFF;
			TIM6_flag1=0;
		}
		//TIM10
		if(TIM10_flag1>=1){
			LED2_ON;
		}
		if(TIM10_flag1>=2){
			LED2_OFF;
			TIM10_flag1=0;
		}
    }
}

3.stm32 TIM1的CH1N~CH3N、CH1~CH4基本配置:

https://blog.csdn.net/qq_35831134/article/details/110932411

猜你喜欢

转载自blog.csdn.net/qq_35831134/article/details/110880301