这个真的很容易! 喜欢免费糖果
似乎主代码中的 GIE 被无线电触发、而不是外设引脚上的中断(我想要的)。 我可以在无线电 Tx 的示波器上看到我的功率下降、环路中没有其他内容、Tx 将在 INT 开始运行之前连续重复。 这是有道理的、CC430中的无线电是单独的、因此我在主程序中添加了10ms 的延迟、并且重复停止... 但这是令人兴奋的。
一种更好的方法可能是启动无线电、然后执行一些计算(花费比 Tx 更长的时间)、然后进入睡眠状态、等待新的外设中断... 某种协处理器方法。 但最好在 main 中知道何时完成该操作、或者忽略 main 中的无线电 GIE 标志以防止误触发。
供参考、在下面的例子中、我的中断被减慢至仅250ms、以查看发生了什么。 我希望只能看到1个 Tx 脉冲、背靠背的脉冲不多(底部没有延迟)。
谢谢!
while (true){
P1IE |= BIT1;// P1.1中断被启用。 端口1 ISR 中的标志被复位
_bis_SR_register (LPM3_bits + GIE);//正在使用 LPM0、为什么不能更难睡眠?
P1IE &=~BIT1;// P1.1中断被禁用
LoadRadio();// Tx 数据
//在此处添加~10ms 延迟(带辅助)可阻止上述 GIE 重新触发。 Tx 无线电的时间似乎约为7.5ms (似乎很长、无线电速度慢?)
}
#pragma vector=Port1_vector
_interrupt void Port_1 (void){
switch (__evo_in_range (P1IV、0x04)){
情况0x00:中断;//无中断挂起
情况0x02:中断;//中断源:端口1.0中断;中断标志:P1IFG.0;中断
情况0x04://端口1.1中断;中断标志:P1IFG.1
//P1IE &=~BIT1;// P1.1中断被禁用
P1IFG &=~BIT1;
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);
断开;//引脚2
//case 0x06:break;//引脚2
默认值:break;
}
}