You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

84 lines
2.2 KiB

#include "tim3.h"
#include "usart1.h"
#include <stdio.h>
extern Cmd_States Uart1_Cmd_State;
uint32_t g_tim3_count = 0;
extern uint32_t uart1_recv_time;
/**
* @brief Configures the different system clocks.
*/
void TIM3_RCC_Configuration(void)
{
/* TIM3 clock enable */
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM3, ENABLE);
}
/**
* @brief Configures tim3 clocks.
*/
void TIM3_TIM_Configuration(void)
{
TIM_TimeBaseInitType TIM_TimeBaseStructure;
/* Compute the prescaler value */
/* Time base configuration */
TIM_TimeBaseStructure.Period = 9; // 计数到9触发中断,即1ms
TIM_TimeBaseStructure.Prescaler = 7199; // 10K
TIM_TimeBaseStructure.ClkDiv = 0;
TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
TIM_InitTimeBase(TIM3, &TIM_TimeBaseStructure);
/* Prescaler configuration */
//TIM_ConfigPrescaler(TIM3, PrescalerValue, TIM_PSC_RELOAD_MODE_IMMEDIATE);
/* TIM3 enable update irq */
TIM_ConfigInt(TIM3, TIM_INT_UPDATE, ENABLE);
/* TIM3 enable counter */
TIM_Enable(TIM3, ENABLE);
}
/**
* @brief Configure the nested vectored interrupt controller.
*/
void TIM3_NVIC_Configuration(void)
{
NVIC_InitType NVIC_InitStructure;
/* Enable the TIM3 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; // 抢占式中断优先级 0-3,最低
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 子中断优先级 0-3,最低
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/**
* @brief This function handles TIM3 global interrupt request.
*/
void TIM3_IRQHandler(void)
{
if (TIM_GetIntStatus(TIM3, TIM_INT_UPDATE) != RESET)
{
TIM_ClrIntPendingBit(TIM3, TIM_INT_UPDATE);
//GPIOA->POD ^= GPIO_PIN_15;
g_tim3_count++;
if(g_tim3_count > uart1_recv_time) {
Uart1_Cmd_State = kCmd_Head1; // 将命令处理标志复位
}
//if(g_tim3_count % 1000 == 0) {
// printf("tim3 count %d 0x%08x\r\n", g_tim3_count, SCB->VTOR);
//}
}
}
void TIM3_Init(void)
{
TIM3_RCC_Configuration();
TIM3_TIM_Configuration();
TIM3_NVIC_Configuration();
}