PT32L007串口收发源代码 分享 澎湃微

/**********************************************************/
///< UART1 中断服务函数  波特率 9600
//***********************************************************
void UART0_Handler(void)
{
//    static boolean_t debug=FALSE ;
    //uint16_t ssss=(uint16_t )UART0 ->SR ;
    
    if(UART_GetITStatus(UART0,UART_IT_RXNEI)!=RESET)
    {
            UART_ClearFlag(UART0,UART_IT_RXNEI);    
            
            uint8_t dat  =(uint8_t )(UART0 ->DR );            //(uint8_t )UART_ReceiveData(UART0);
            UART0 ->DR =dat ;
//            u8RxData [u8RxCnt ++]=dat;    //        
//            rxtimeout_cnt=0;                            /** 时间清0 **/
//            if(u8RxCnt >=Num_UartBufMax)            /*数据包出错*/
//            {
//                u8RxCnt =0;
//                u8RxDatalen=0;
//                return ;
//            }            
//            /***********************************************/    
//            /*****重新定位包头,****/
//            if(u8RxCnt >3  && u8RxData[u8RxCnt-2 ]==0xAA && u8RxData[u8RxCnt -1]==0x55 )
//            {
//                if(u8RxData [0]!=0xAA || u8RxData [1]!=0x55)
//                {
//                    u8RxData [0]=0xAA;
//                    u8RxData [1]=0x55;
//                    u8RxCnt =2;
//                    u8RxDatalen =0;
//                }            
//            }
//            /**************************************************/
//            if(u8RxCnt ==5)        //接收完到包长度
//            {
//                if(u8RxData [0]==0xAA && u8RxData[1]==0x55)            /* 包头正确 */
//                {
//                    u8RxDatalen=u8RxData[3]+3;                /** H不要 **/
//                    return ;
//                }                 
//            }
//            if(u8RxDatalen >5 && u8RxDatalen ==u8RxCnt && dat ==0xFB )        //接收完成
//            {
                uint16_t crc=(uint16_t )u8RxData[u8RxCnt-2];
                crc<<=8;
                crc |=(uint16_t )u8RxData[u8RxCnt-3];
                uint16_t crc2 =CRC16 (&u8RxData [2],(u8RxCnt -2-3));
                if(crc2==crc)
                {
//                    Uart1_RxEnd  =TRUE ;            
//                    RxCMD =u8RxData [5]; 
//                    /**接收完成 数据转入buf2缓存 **/
//                    for(uint8_t ii=0;ii<u8RxCnt ;ii++)
//                    {
//                        u8RxBuf2 [ii]=u8RxData[ii];        
//                        //u8TxData[ii]=u8RxData[ii];
//                    }
//                    u8RxBuf2_Dlen =u8RxCnt ;
                }                
//                u8RxDatalen=0;
//                u8RxCnt =0;
//                //等待读取
//                /****************************/                 
//            }                        
    }
    if(UART0->SR & UART_SR_TXE )
    {
        UART0 ->SR |= (~(UART_SR_TXE));    

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值