void USART1_IRQHandler(void)
{
if (USART1->SR&(1<<5))
{
rdatabuf[rdatanum]= USART1->DR;
rdatanum++;
Timerx_Init(500,2399);//其实这里我是想让定时器的计数器清0,但是不知道怎么写
}
}
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//溢出中断
{
r_sec= 1; //超时标志位
}
TIM3->SR&=~(1<<0);//清除中断标志位
}
void Timerx_Init(u16 arr,u16 psc)
{
TIM3->SMCR&=0xFFFFF8; //内部时钟
RCC->APB1ENR|=1<<1; //TIM3时钟使能
TIM3->ARR=arr;
TIM3-> SC=psc;
TIM3->DIER|=1<<0; //允许更新中断
TIM3->CR1|=0x01; //使能定时器3
MY_NVIC_Init(3,3,TIM3_IRQChannel,2);//抢占1,子优先级2,组2
}
这样串口接收到的数据总是有漏掉,请高手指教
|