This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2311:CPU响应中断所花费的周期数?

Guru**** 2536670 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/576169/msp430fr2311-how-many-cycles-the-cpu-cost-to-response-a-interrupt

部件号:MSP430FR2311

大家好,

我现在正在使用FR2311,MCLK = 16MHz来开发SW SPI代码(slaver),我发现CPU的成本接近1美元,以响应ISR(CPU TOB, 1.1 WFP 2.0 Capture)。  

听起来有点长
这是否正常? 希望 有人帮忙。  

谢谢...

#include <msp430fr2311.h>

void main( void )
{//
停止监视计时器以防止超时复位
WDTCTL = WDTPW + WDTHOLD;

FRCTL0 = FRCTLPW | NWITS_1;

__bis_sr_register (SCG0); //禁用FLL
CSCTL3 |= SELREF_REFCLK; //将REFO设置为FLL参考源
CSCTL0 = 0; //清除DCO和MOD寄存器
CSCTL1 &=~(DCORSEL_7); //清除DCO频率选择位优先
CSCTL1 |= DCORSEL_5; // SET DCO = 16MHz
CSCTL2 = FLLD_0 + 487; // DCOCLKDIV = 16MHz
__DELAY_CYCLES (3);
__BIC_SR_REGISTER (SCG0); //启用FLL
while (CSCTL7和(FLLUNLOCK0 | FLLUNLOCK1)); // FLL已锁定

CSCTL4 = SELMS__DCOCLKDIV |拉美经济体系__REFOCLK; //将默认的REFO(~3.2768万Hz)设置为ACLK源,ACLK = 3.2768万Hz
//默认的DCOCLKDIV设置为MCLK和SMCLK源

P1DIR || BIT0; //WFP 1.0 输出

P2DIR &=~BIT0; 		//WFP 2.0 作为端口 	
P2SEL0 |= BIT0;

PM5CTL0 &=~LOCKLPM2; //禁用GPIO通电默认高阻抗模式
//以激活先前配置的端口设置

TB1CCTL1 |= CM_1 | CCIS_0| CCIE | CAP | SCS;
TB1CTL |= TBSSEL_2 | MC_2 | TBCLR; //使用SMCLK作为时钟源,清除TB0R

__bis_sr_register(LPM0_bits | GIE);
__no_operation();
}

#pragma vector = Timer1_B1_vector
__interrupt void Timer1_B1_ISR(void)
{
P1OUT ^= BIT0;
TB1CCTL1&=~CCIFG;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PS:SPI_CLK上升电位和信号IO之间的时间间隔为1us。
    信号IO在ISR请求时切换(P1OUT ^=BIT0)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因为计时器事件与计时器时钟同步,所以在使用采样方法时不能指望即时中断。 您应改用GPIO端口中断。 老实说-最好选择另一个具有所有所需外设(包括SPI)的芯片。