请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
你好!
我的代码基于射频示例"CC430射频代码示例- TX 和 RX (可变数据包长度=< FIFO 大小)"、但我想分别将 RX 和 TX 的中断从 RFIFG9分离到 RFIFG4和 RFIFG8。
我`m CC430芯片上的射频中断有问题。 标志 RFIFG8的正边沿未被置位、但是具有负边沿的 RFIFG9被置位。 它们都是 TX FIFO 下溢。
原始中断处理程序:
#pragma vector=CC1101_vector __interrupt void CC1101_ISR (void) { switch (__even_in_range (RF1AIV、32)) //确定无线电内核中断的优先级 { 情况0:中断; //无射频内核中断挂起 案例2:中断; // RFIFG0 案例4:中断; // RFIFG1 案例6:中断; // RFIFG2 案例8:中断; // RFIFG3 案例10:中断; // RFIFG4 案例12:中断; // RFIFG5 案例14:中断; // RFIFG6 案例16:中断; // RFIFG7 案例18:中断; // RFIFG8 案例20: // RFIFG9 if (正在接收) //数据包的 RX 末尾 { //从 FIFO 读取长度字节 RxBufferLength = ReadSingleReg ( RXBYTES ); ReadBurstReg (RF_RXFIFORD、RxBuffer、RxBufferLength); //在此处停止以查看 RxBuffer 的内容 __no_operation(); //检查 CRC 结果 if (RxBuffer[CRC_LQI_IDX]和 CRC_OK) P1OUT ^= BIT0; //切换 LED1 } 否则 IF (发送) //数据包的 TX 结束 { RF1AIE &=~BIT9; //禁用 TX 数据包结束中断 P3OUT &=~BIT6; //发送后关闭 LED 发送= 0; P1OUT ^= BIT0; //切换 LED1 } 其他 while (1); //陷阱 中断; 判例22:中断; // RFIFG10 案例24:中断; // RFIFG11 判例26:中断; // RFIFG12 案例28:中断; // RFIFG13 案例30:中断; // RFIFG14 案例32:中断; // RFIFG15 } __BIC_SR_REGISTER_ON_EXIT (LPM3_BITS); }
我的中断处理程序:
#pragma vector=CC1101_vector __interrupt void CC1101_ISR (void) { switch (__even_in_range (RF1AIV、32)) //确定无线电内核中断的优先级 { 情况0:中断; //无射频内核中断挂起 案例2:中断; // RFIFG0 案例4:中断; // RFIFG1 案例6:中断; // RFIFG2 案例8:中断; // RFIFG3 案例10: // RFIFG4 { P1OUT ^= BIT0; RFdiBufL = ReadSingleReg ( RXBYTES ); ReadBurstReg (RF_RXFIFORD、RFdiBuf、RFdiBufL); } 中断; 案例12:中断; // RFIFG5 案例14:中断; // RFIFG6 案例16:中断; // RFIFG7 案例18: // RFIFG8 { TXDATA=1; } 中断; 情况20:TXDATA=1;中断; // RFIFG9 判例22:中断; // RFIFG10 案例24:中断; // RFIFG11 判例26:中断; // RFIFG12 案例28:中断; // RFIFG13 案例30:中断; // RFIFG14 案例32:中断; // RFIFG15 } }
我的射频设置:
ResetRadioCore();InitRadio(); WriteSingleReg (MCSM1、0b1100); RF1AIE |= BIT4 + BIT8;
当我尝试使用 RFIFG8标志时、TXDATA 未设置、但当我使用 RFIFG9 (当然使用正确的设置)时、标志设置为设置。 有人可以帮助吗?