论坛元老
 
- 积分
- 7144
- 金钱
- 7144
- 注册时间
- 2015-1-23
- 在线时间
- 106 小时
|
发表于 2015-7-16 09:11:28
|
显示全部楼层
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE)) //查看接收中断标志位
{
TIM_Cmd(TIM2, DISABLE);
TIM2_count= TIM_GetCounter(TIM2);
if(TIM2_count>=19)
{
UART1_buf_cursor=0;
}
UART1_recv_buf[UART1_buf_cursor++] = (u8)USART_ReceiveData(USART1);
if(UART1_buf_cursor>=UART1_BUF_UNM-1) //防止超出边界
{
UART1_buf_cursor=UART1_BUF_UNM-1;
}
TIM_SetCounter(TIM2, 0);
TIM_Cmd(TIM2, ENABLE);
}
}
TIM2_count=TIM_GetCounter(TIM2); //串口1接收数据的计时器
if(TIM2_count>=20) //3.5T
{
TIM_Cmd(TIM2, DISABLE);
UART1_data_recv_flag=1; //串口1接收标志置一 两个串口共用一个定时器, 用的时候要注意, 标定用完后关标定程序, 两个软件只能有一个运行
TIM_SetCounter(TIM2, 19); //70 一定要小于 TIM2_count>=10
} |
|