串口接收超时中断程序思路

方法0:

//通过判断接收连续2个字符之间的时间差不大于10ms来决定是不是一次连续的数据.
//如果2个字符接收间隔超过10ms,则认为不是1次连续数据.也就是超过10ms没有接收到
//任何数据,则表示此次接收完毕.
//接收到的数据状态
//[15]:0,没有接收到数据;1,接收到了一批数据.
//[14:0]:接收到的数据长度
u16 USART2_RX_STA=0;        
void USART2_IRQHandler(void)
{
    u8 res;        
    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//接收到数据
    {     
 
        res =USART_ReceiveData(USART2);        
        if(USART2_RX_STA<USART2_MAX_RECV_LEN)        //还可以接收数据
        {
            TIM_SetCounter(TIM4,0);//计数器清空                         
            if(USART2_RX_STA==0)

                     TIM4_Set(1);         //使能定时器4的中断 
            USART2_RX_BUF[USART2_RX_STA++]=res;        //记录接收到的值     
        }

       else 
        {
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值