SmartCar-V1/Code/bsp/src/bsp_timer.c

56 lines
2.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "bsp_timer.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_rcc.h"
#include "misc.h"
#include "stm32f10x.h"
#define BSP_TIMER_USER_SYSTICK_TYPE (TIM2)
#define BSP_TIMER_USER_SYSTICK_RCC (RCC_APB1Periph_TIM2)
#define BSP_TIMER_USER_SYSTICK_IRQN (TIM2_IRQn)
#define BSP_TINER_USER_SYSTICK_PRESCALER (72 - 1)
#define BSP_TINER_USER_SYSTICK_PERIOD (1000u)
static void bsp_timer_2_init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* 1. 初始化时钟 */
RCC_APB1PeriphClockCmd(BSP_TIMER_USER_SYSTICK_RCC, ENABLE);
/* 2. 初始化定时器参数,设置自动重装值,分频系数,计数方式等 */
TIM_TimeBaseStructure.TIM_Period = BSP_TINER_USER_SYSTICK_PERIOD;
TIM_TimeBaseStructure.TIM_Prescaler =BSP_TINER_USER_SYSTICK_PRESCALER;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(BSP_TIMER_USER_SYSTICK_TYPE, &TIM_TimeBaseStructure);
/* 3. 设置 TIM3_DIER 允许更新中断 */
TIM_ITConfig(BSP_TIMER_USER_SYSTICK_TYPE, TIM_IT_Update, ENABLE);
/* 4. TIM3 中断优先级设置。 */
NVIC_InitStructure.NVIC_IRQChannel = BSP_TIMER_USER_SYSTICK_IRQN; //TIM3 中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级 0 级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级 3 级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化 NVIC 寄存器
/* 5. 使能定时器2 */
TIM_Cmd(BSP_TIMER_USER_SYSTICK_TYPE, ENABLE);
}
// /* 6. 编写中断服务函数 */
// void bsp_timer_user_systick_isr_process(void) //TIM3 中断
// {
// if (TIM_GetITStatus(BSP_TIMER_USER_SYSTICK_TYPE, TIM_IT_Update) != RESET)
// {
// // 硬件置了1需要软件来清0
// TIM_ClearITPendingBit(BSP_TIMER_USER_SYSTICK_TYPE, TIM_IT_Update);
// /* add your code here */
// }
// }
void bsp_timer_init(void)
{
bsp_timer_2_init();
}