【无标题】dadsadadsa

/******************************************************************************* 
File name: bsp_driver_GeneralTim .c
Description: 定时器2与定时器3驱动层
Author: Kerlly
Version: v1.0
Date: 20220614
History: 20220614:v1.0:初版 
*******************************************************************************/
#include "bsp_driver_GeneralTim.h" 
#include "bsp_led.h"
#include "./usart/bsp_usart.h"
extern volatile uint32_t s_time_count1;
extern volatile uint32_t s_time_count2;
extern volatile uint8_t s_timer50ms_flag;
extern volatile uint8_t s_timer1000ms_flag;
/*******************************************************************************
Function:BSP_GeneralTim2_Init
Description: GeneralTim2初始化,通用定时器2
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void BSP_GeneralTim2_Init(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);	// 设置中断组为0	
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn ;//全局中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;// 设置主优先级为 0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;// 设置抢占优先级为1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;		
    RCC_APB1PeriphClockCmd(GENERAL_TIM_CLK, ENABLE);// 开启定时器时钟,即内部时钟CK_INT=72M	
    TIM_TimeBaseStructure.TIM_Period=GENERAL_TIM_Period;// 自动重装载寄存器的值
    TIM_TimeBaseStructure.TIM_Prescaler= GENERAL_TIM_Prescaler;	 // 时钟预分频数
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;// 时钟分频因子 
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; // 计数器计数模式,设置为向上计数		
		TIM_TimeBaseStructure.TIM_RepetitionCounter=0;		// 重复计数器的值
    TIM_TimeBaseInit(GENERAL_TIM, &TIM_TimeBaseStructure);// 初始化定时器
    TIM_ClearFlag(GENERAL_TIM, TIM_FLAG_Update);
    TIM_ITConfig(GENERAL_TIM,TIM_IT_Update,ENABLE);
}
/*******************************************************************************
Function:BSP_GeneralTim3_Init
Description: GeneralTim3初始化,通用定时器3
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void BSP_GeneralTim3_Init(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);	// 设置中断组为0	
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn ;//全局中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;// 设置主优先级为 0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;// 设置抢占优先级为2
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;		
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);// 开启定时器时钟,即内部时钟CK_INT=72M	
    TIM_TimeBaseStructure.TIM_Period= (1000-1);// 自动重装载寄存器的值
    TIM_TimeBaseStructure.TIM_Prescaler= 71;	 // 时钟预分频数
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;// 时钟分频因子 
    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; // 计数器计数模式,设置为向上计数		
	TIM_TimeBaseStructure.TIM_RepetitionCounter=0;		// 重复计数器的值
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);// 初始化定时器
    TIM_ClearFlag(TIM3, TIM_FLAG_Update);
    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
}
/*******************************************************************************
Function: Driver_GeneralTim2_Cmd
Description:使能TIM2外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim2_Enable(void)
{
    TIM_Cmd(GENERAL_TIM, ENABLE);
}
/*******************************************************************************
Function: Driver_GeneralTim2_Cmd
Description:失能TIM2外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim2_Disable(void)
{
    TIM_Cmd(GENERAL_TIM,DISABLE);
}
/*******************************************************************************
Function: Driver_GeneralTim3_Cmd
Description:使能TIM3外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim3_Enable(void)
{
    TIM_Cmd(TIM3, ENABLE);
}
/*******************************************************************************
Function: Driver_GeneralTim3_Cmd
Description:失能TIM3外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim3_Disable(void)
{
    TIM_Cmd(TIM3,DISABLE);
}

/*******************************************************************************
Function:   TIM2_IRQHandler
Description:定时器2中断服务函数,初始化中断向量表
Input:  无
Output: 无
Return: 0 = 成功,1 = 失败
*******************************************************************************/

void TIM2_IRQHandler(void)
{
	if ( TIM_GetITStatus( GENERAL_TIM, TIM_IT_Update) != RESET ) 
	{	        
        if (s_time_count1 > 49)
            {
            s_time_count1 = 0;     
			//LED1_TOGGLE;
            }       
        s_time_count1 ++;
        TIM_ClearITPendingBit(GENERAL_TIM , TIM_FLAG_Update);
	}		 	
}
/*******************************************************************************
Function: TIM3_IRQHandler
Description:定时器3中断服务函数,初始化中断向量表
Input:  无
Output: 无
Return: 0 = 成功,1 = 失败
*******************************************************************************/
void TIM3_IRQHandler(void)
{
	if ( TIM_GetITStatus( TIM3, TIM_IT_Update) != RESET ) 
    {	            
        if (s_time_count2 > 999)
            {
            s_time_count2 = 0;
            //s_timer50ms_flag;
            printf("滴滴滴\r\n");
            }        
        s_time_count2 ++;
        TIM_ClearITPendingBit( TIM3 , TIM_FLAG_Update);
	}		 	
}
/*********************************************END OF FILE**********************/

/******************************************************************************* 
Copyright: 2022, LANSO HONLY 
File name: bsp_driver_GeneralTim .h
Description: 底层定时器2与定时器3驱动层
Author: Kerlly
Version: v1.0
Date: 20220614
History: 20220614:v1.0:初版 
*******************************************************************************/
#ifndef __BSP_GENERALTIME_H
#define __BSP_GENERALTIME_H


#include "stm32f10x.h"

/**************通用定时器TIM参数定义,只限TIM2、3、4、5************/
#define GENERAL_TIM2    1
#define GENERAL_TIM3    0
#define GENERAL_TIM4    0
#define GENERAL_TIM5    0

#if  GENERAL_TIM2
#define            GENERAL_TIM                   TIM2
#define            GENERAL_TIM_CLK               RCC_APB1Periph_TIM2
#define            GENERAL_TIM_Period            (1000-1)
#define            GENERAL_TIM_Prescaler         71
#define            GENERAL_TIM_IRQ               TIM2_IRQn

#elif  GENERAL_TIM3
#define            GENERAL_TIM                   TIM3
#define            GENERAL_TIM_CLK               RCC_APB1Periph_TIM3
#define            GENERAL_TIM_Period            (1000-1)
#define            GENERAL_TIM_Prescaler         71
#define            GENERAL_TIM_IRQ               TIM3_IRQn
#define            GENERAL_TIM3_IRQHandler        TIM3_IRQHandler

#elif   GENERAL_TIM4
#define            GENERAL_TIM                   TIM4
#define            GENERAL_TIM_CLK               RCC_APB1Periph_TIM4
#define            GENERAL_TIM_Period            (1000-1)
#define            GENERAL_TIM_Prescaler         71
#define            GENERAL_TIM_IRQ               TIM4_IRQn
#define            GENERAL_TIM_IRQHandler        TIM4_IRQHandler

#elif   GENERAL_TIM5
#define            GENERAL_TIM                   TIM5
#define            GENERAL_TIM_CLK               RCC_APB1Periph_TIM5
#define            GENERAL_TIM_Period            (1000-1)
#define            GENERAL_TIM_Prescaler         71
#define            GENERAL_TIM_IRQ               TIM5_IRQn
#define            GENERAL_TIM_IRQHandler        TIM5_IRQHandler

#endif
/**************************函数声明********************************/
/*******************************************************************************
Function:BSP_GeneralTim2_Init
Description: GeneralTim2初始化,通用定时器2
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void BSP_GeneralTim2_Init(void);

/*******************************************************************************
Function:BSP_GeneralTim3_Init
Description: GeneralTim3初始化,通用定时器3
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void BSP_GeneralTim3_Init(void);

/*******************************************************************************
Function: Driver_GeneralTim2_Enable
Description:使能TIM2外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim2_Enable(void);
/*******************************************************************************
Function: Driver_GeneralTim2_Disable
Description:失能TIM2外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim2_Disable(void);

/*******************************************************************************
Function: Driver_GeneralTim3_Enable
Description:使能TIM3外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim3_Enable(void);

/*******************************************************************************
Function: Driver_GeneralTim3_Disable
Description:失能TIM3外设
Input:  无
Output: 无
Return: 无
*******************************************************************************/
void Driver_GeneralTim3_Disable(void);
#endif	/* __BSP_GENERALTIME_H */


#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_driver_GeneralTim.h" 
#include "./usart/bsp_usart.h"

uint32_t s_time_count1 = 0; // ms 计时变量 
uint32_t s_time_count2 = 0;
int main(void)
{
	/* led 端口配置 */ 
	LED_GPIO_Config();
	USART_Config();
    BSP_GeneralTim2_Init();
    BSP_GeneralTim3_Init();
    Driver_GeneralTim2_Enable();
    //Driver_GeneralTim2_Disable();
    Driver_GeneralTim3_Enable();
    //Driver_GeneralTim3_Disable();
    while(1)
        {            
       // printf("滴滴滴\r\n");
        LED1_TOGGLE
        }
}
/*********************************************END OF FILE**********************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值