新手 求帮助 uart程序问题

uwillobe 2014-08-23 09:35:53
刚毕业,领导给了一段程序进行学习,不过真心看不懂,求帮助,求注释
void uart_fmAnaly(void)
{
uint rcvcrc16, sndcrc16;
ptagtBBFRAME pfram;

if(g_ctrlFlag.rcvOk == 1) //接收正确
{
pfram = (ptagtBBFRAME)&g_uartbuf[0];
rcvcrc16 = CRC16(g_uartbuf, pfram->dlen-2, 0xffff); //
if(rcvcrc16 == (g_uartbuf[pfram->dlen-2]|g_uartbuf[pfram->dlen-1]<<8)) //查询crc是否正确
{
if(pfram->cmd & FRM_MANS_FLAG) //0x80,主板对打卡板的响应消息
{
//LED_ON();
g_ctrlFlag.fmok = 1; //收到正确的响应包
}
else if((pfram->cmd & FRM_MOSI_FLAG) == FRM_MOSI_FLAG)
{//0x40,主板到打卡板的消息(做配置,状态查询的一些命令)
switch(pfram->cmd)
{
case M_STATE_CMD: //查询串口的状态
pfram->cmd |= FRM_MANS_FLAG;
sndcrc16 = CRC16(g_uartbuf, pfram->dlen-2, 0xffff);
#if 1
uart_sndStr((uchar *)g_uartbuf, 5); //先把数据体前面的数据发送完成
uart_sndStr((uchar *)&sndcrc16, 2); //先把数据体前面的数据发送完成
#endif
uart_cfgRst();
break;
}
}
g_ctrlFlag.crdTmEn = FALSE; //关闭回复计时
g_cardTM = 0x00;
g_cardState =CARD_MUTUAL; //3,
} //错误的数据包
else //其他类型的错误帧
{
g_cardState = CARD_SEEK; //0,
uart_cfgRst();
}
g_ctrlFlag.rcvOk = 0;
}
}
void uart_cfgRst(void)
{
g_rcvpos = 0;
g_ctrlFlag.rcvOk = 0;
UART_INT_EN();
}
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
uwillobe 2014-09-02
  • 打赏
  • 举报
回复
我个人觉得看懂程序最重要的还是以后自己能够应用,所以想要搞懂这些最基本的东西,关于在9楼里提出的问题,希望前辈们帮忙回答下,也可以是像g_ctrlFlag形式的变量,给出自己的见解,或者需要我再提供关于这个程序的相关信息也可以提出来~
wuweiquan123 2014-09-02
  • 打赏
  • 举报
回复
已经注释的很清楚了, 看注释就行啦。 变量的话就跳转查看具体定义。
uwillobe 2014-09-02
  • 打赏
  • 举报
回复
g_ctrlFlag的含义 1.g_ctrlFlag在pic单片机中有固定的某种含义? 2.ctrl一般表示控制,Flag一般表示标志,那么g是什么含义? 3.下划线"_"的作用时什么? 4.g_ctrlFlag.rcvOK的g_ctrlFlag后加一“.”后再加一个标示后又表示什么?
uwillobe 2014-08-23
  • 打赏
  • 举报
回复
具体到每一句的功能,好多变量不知道是干嘛的,这些变量的名字都能看懂吗?我越看越晕的说~
707wk 2014-08-23
  • 打赏
  • 举报
回复
这上面不是有注释吗?
void uart_fmAnaly(void)
{
    uint rcvcrc16,sndcrc16 ;
    ptagtBBFRAME pfram ;
    
    //接收正确
    if(g_ctrlFlag.rcvOk==1)
    {
        pfram=(ptagtBBFRAME)&g_uartbuf[0];
        rcvcrc16=CRC16(g_uartbuf,pfram->dlen-2,0xffff);
        //
        //查询crc是否正确
        if(rcvcrc16==(g_uartbuf[pfram->dlen-2]|g_uartbuf[pfram->dlen-1]<<8))
        {
            //0x80,主板对打卡板的响应消息
            if(pfram->cmd&FRM_MANS_FLAG)
            {
                //LED_ON();
                g_ctrlFlag.fmok=1 ;
                //收到正确的响应包
            }
            else if((pfram->cmd&FRM_MOSI_FLAG)==FRM_MOSI_FLAG)
            {
                //0x40,主板到打卡板的消息(做配置,状态查询的一些命令)
                switch(pfram->cmd)
                {
                    case M_STATE_CMD :
                    //查询串口的状态
                    pfram->cmd|=FRM_MANS_FLAG ;
                    sndcrc16=CRC16(g_uartbuf,pfram->dlen-2,0xffff);
                    #if 1 
                    uart_sndStr((uchar*)g_uartbuf,5);
                    //先把数据体前面的数据发送完成
                    uart_sndStr((uchar*)&sndcrc16,2);
                    //先把数据体前面的数据发送完成
                    #endif 
                    uart_cfgRst();
                    break ;
                }
            }
            g_ctrlFlag.crdTmEn=FALSE ;
            //关闭回复计时
            g_cardTM=0x00 ;
            g_cardState=CARD_MUTUAL ;
            //3,
        }
        //错误的数据包
        //其他类型的错误帧
        else 
        {
            g_cardState=CARD_SEEK ;
            //0,
            uart_cfgRst();
        }
        g_ctrlFlag.rcvOk=0 ;
    }
}
void uart_cfgRst(void)
{
    g_rcvpos=0 ;
    g_ctrlFlag.rcvOk=0 ;
    UART_INT_EN();
}
uwillobe 2014-08-23
  • 打赏
  • 举报
回复
不太懂,什么是上位机、下位机?
richyhuang 2014-08-23
  • 打赏
  • 举报
回复
这个是下位机程序吧
derekrose 2014-08-23
  • 打赏
  • 举报
回复
2个字 硬看
  • 打赏
  • 举报
回复
引用 6 楼 uwillobe 的回复:
这些变量是什么含义,看懂的帮忙解释下,谢了! rcvcrc16 sndcrc16 ptagtBBFRAME g_ctrlFlag.rcvOK g_ctrlFlag.fmOK pfram dlen FRM_MANS_FLAG cmd FRM_MOSI_FLAG uart_cfgRst
不太了解项目只能猜了: rcvcrc16//16位CRC校验,难道是接收到的? sndcrc16//16位CRC校验,发送的? ptagtBBFRAME//指向BB框架目标的指针? g_ctrlFlag.rcvOK//控制位标中的rcvOK标记 g_ctrlFlag.fmOK//控制位标中的fmvOK标记 pfram//指向框架,窗口的指针? dlen//长度 FRM_MANS_FLAG//人的框架标记 cmd//命令 FRM_MOSI_FLAG//MOSI的框架标记 uart_cfgRst//uart配置Rst不懂是什么意思。
uwillobe 2014-08-23
  • 打赏
  • 举报
回复
这些变量是什么含义,看懂的帮忙解释下,谢了! rcvcrc16 sndcrc16 ptagtBBFRAME g_ctrlFlag.rcvOK g_ctrlFlag.fmOK pfram dlen FRM_MANS_FLAG cmd FRM_MOSI_FLAG uart_cfgRst

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧