1、中断方式:
接收数据时,MCU转入中断服务程序,再处理接收到的数据;
CMT2300A接收数据的中断:
检测RX_FIFO_TH 中断,一旦有效表示FIFO 已经被填入预设的数据长度,就可以开始读取,这样适合数据包长度不等于FIFO 深度,并且用户要做接收完整数据包之后,才读取FIFO 的情况。
2、查询方式:
查询MCU状态寄存器中的接收缓冲器状态位,再对数据进行处理;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17//SPI驱动CMT2300A发送数据: //使能写FIFO CMT2300A_EnableWriteFifo(); //把【pBuf+sendlen】写到CMT2300的FIFO中,一次写64byte CMT2300A_WriteFifo(pBuf+sendlen, 64); //进入发送状态 CMT2300A_GoTx(); delay = 1000; while(1) { //cmt2300a_寄存器中查询到发送完成标识:TX_DONE if(CMT2300A_MASK_TX_DONE_FLG & CMT2300A_ReadReg(CMT2300A_CUS_INT_CLR1)) { break; } }
3、中断和查询方式的区别:
中断方式,MCU可以执行别的任务,而查询方式只能进行接收查询,在此期间不能执行其他任务,在实现的区别当然是:是否把接收中断使能位置为有效。
4、串口通讯中的查询方式和中断方式:
查询方式: 发送数据——先发后查;
接收数据——先查后收。
中断方式: 发送数据——发送、等待中断、中断中发送;
接收数据——等待中断、在中断中接收。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//先发送数据 CMT2300A_GoTx(); //再查询状态寄存器 if(CMT2300A_MASK_TX_DONE_FLG &CMT2300A_ReadReg(CMT2300A_CUS_INT_CLR1)) { break; } //先查询寄存器的标志位:完整接收到一包数据,再接收 if(CMT2300A_MASK_PKT_OK_FLG & CMT2300A_ReadReg(CMT2300A_CUS_INT_FLAG)) { //CMT2300A_GoStby(); //读FIFO中的数据,接收到的数据先存储在FIFO中 CMT2300A_ReadFifo(pBuf,len); CMT2300A_ClearRxFifo(); CMT2300A_ClearInterruptFlags(); CMT2300A_EnableReadFifo(); //进入接收状态 CMT2300A_GoRx(); return 1; }
最后
以上就是欣慰溪流最近收集整理的关于【2】中断方式和查询方式的区别的全部内容,更多相关【2】中断方式和查询方式内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复