TI中文支持网
TI专业的中文技术问题搜集分享网站

语句阻塞运行

请问TI工程师:

         下面这3个函数,读SPI数据  ,是不是阻塞其他中断的执行的,必须整体运行完才可以 接收其他中断函数处理?

         SPI_transmitData(EUSCI_B2_BASE, 0XAA);
        while (!(SPI_getInterruptStatus(EUSCI_B2_BASE, EUSCI_B_SPI_TRANSMIT_INTERRUPT)));
        inBuffers[i] = SPI_receiveData(EUSCI_B2_BASE);

Susan Yang:

请问您现在使用的是哪款芯片?MSP432?

The UCRXIFG interrupt flag is set each time a character is received and loaded into UCxRXBUF. An interrupt request is generated if UCRXIE is set. UCRXIFG and UCRXIE are reset by a Hard Reset or when UCSWRST = 1. UCRXIFG is automatically reset when UCxRXBUF is read.

理论上是可以被打断的,但最好是不要打断SPI中断。所以之前都是在通讯过程中关闭全程中断,然后再打开。

例程内的中断服务程序如下

//******************************************************************************
//
//This is the EUSCI_B0 interrupt vector service routine.
//
//******************************************************************************
void EUSCIB0_IRQHandler(void)
{uint32_t status;status = SPI_getEnabledInterruptStatus(EUSCI_B0_BASE);SPI_clearInterruptFlag(EUSCI_B0_BASE, status);if(status & EUSCI_B_SPI_RECEIVE_INTERRUPT){/* USCI_B0 TX buffer ready? */while (!(SPI_getInterruptStatus(EUSCI_B0_BASE, EUSCI_B_SPI_TRANSMIT_INTERRUPT)));/* Transmit data to master */SPI_transmitData(EUSCI_B0_BASE, transmitData++);//Receive data from masterreceiveData = SPI_receiveData(EUSCI_B0_BASE);}
}

yuyinfeng1982:

回复 Susan Yang:

是的·  我使用MSP432P4011 处理器  

因为在处理上面SPI数据是   我有个最高优先级的定时器 采样  ,如果定时到  需要准确触发内置 AD   所以 这个函数 必须需要打断才行。

同时 我的程序是 SPI是接的外置AD芯片

所以  当外置AD有数据可读  就在IO口下降沿中断中 执行  读SPI 的外置AD数据。即这个SPI读数据函数 是在IO口下降沿中断中

请教Susan Yang  这种应用有没有问题~

Susan Yang:

回复 yuyinfeng1982:

理论上是没有问题的

设置中断优先级:
Interrupt_setPriority(uint32_t interruptNumber, uint8_t priority)
interruptNumber:中断号
priority:优先级别

赞(0)
未经允许不得转载:TI中文支持网 » 语句阻塞运行
分享到: 更多 (0)