工具/软件:TI-RTOS
void MSP_EXP430F5529LP_isrDMA (UARg 参数)
{
/*调用 SPI DMA 函数、传递用于 WiFi 的 SPI 句柄*/
SPI_serviceISR ((SPI_Handle)&(SPI_CONFIG[1]));//如何使用 SPI_serviceISR ((SPI_Handle)&(SPI_CONFIG[0])???????
}
//////////////////// cfg文件里增加 μ A
var hwiParams = new halHwi.Params();
hwiParams.arg = 0;////////////////////////// 如何更改此??????????????????????????????????
halHwi.create (50、"&MSP_EXP430F5529LP_isrDMA"、hwiParams);
/////////////////////////////////////////////////////
/*
*========================================= SPI ========================================================
*
/*放入子段以允许 TI 链接器正确删除项目*/
#if defined (__TI_Compiler_version__)
#pragma DATA_SECTION (SPI_CONFIG、".CONST:SPI_CONFIG")
#pragma DATA_SECTION (spiUSCIBDMAHWAttrs、".const:spiUSCIBDMAHWAttrs")
#endif
#include
#include
#include
SPIUSCIADA_Object spiUSCIADMAObjects[MSP_EXP430F5529LP_SPICOUNT];//MSP_EXP430F5529LP_SPICOUNT =1
SPIUSCIBDMA_Object spiUSCIBDMAObjects[MSP_EXP430F5529LP_SPICOUNT];
uint8_t spiUSCIADMAscratchBuf[MSP_EXP430F5529LP_SPICOUNT];
uint8_t spiUSCIBDMAscratchBuf[MSP_EXP430F5529LP_SPICOUNT];
CONST SPIUSCIIBDMA_HWAttrs spiUSCIBDMAHWAttrs[MSP_EXP430F5529LP_SPICOUNT]={
{
baseAddr = USCI_B0_BASE、
时钟源= USCI_B_SPI_CLOCKSOURCE_SMCLK、
.bitOrder = USCI_B_SPI_MSB_FIRST、
.scratchBufPtr =&spiUSCIBDMAscratchBuf[0]、
defaultTxBufValue = 0、
/* DMA */
.dmaBaseAddr = dma_BASE、
/* Rx 通道*/
.rxDMAChannelIndex = DMA_CHANGE_2、
.rxDMASourcedTrigger = DMA_TRIGGERSOURCE_18、
/* Tx 通道*/
TxDMAChannelIndex = DMA_CHANGE_0、
TxDMASourcedTrigger = DMA_TRIGGERSOURCE_19
}
};
CONST SPIUSCIADA_HWAttrs spiUSCIADMAHWAttrs[MSP_EXP430F5529LP_SPICOUNT]={
{
baseAddr = USCI_A0_BASE、
时钟源= USCI_A_SPI_CLOCKSOURCE_SMCLK、
.bitOrder = USCI_A_SPI_MSB_FIRST、
.scratchBufPtr =&spiUSCIADMAscratchBuf[0]、
defaultTxBufValue = 0、
/* DMA */
.dmaBaseAddr = dma_BASE、
/* Rx 通道*/
.rxDMAChannelIndex = DMA_CHANGE_2、
.rxDMASourcedTrigger = DMA_TRIGGERSOURCE_16、
/* Tx 通道*/
TxDMAChannelIndex = DMA_CHANGE_0、
TxDMASourcedTrigger = DMA_TRIGGERSOURCE_17
}
};
CONST SPI_Config SPI_CONFIG[]={
{
.fxnTablePtr =&SPIUSCIBDMA_fxnTable、
.object =&spiUSCIBDMAObjects[0]、
hwAttrs =&spiUSCIBDMAHWAttrs[0]
}、
{
.fxnTablePtr =&SPIUSCIADA_fxnTable、
.object =&spiUSCIADMAObjects[0]、
hwAttrs =&spiUSCIADMAHWAttrs[0]
}、
//{NULL、NULL、NULL}、
};
/*
*==== MSP_EXP430F5529LP_initSPI ===
*
void MSP_EXP430F5529LP_initSPI (void)
{
/*
*注意:TI-RTOS 示例将 USCIB0配置为 SPI 或 I2C。 因此、
*在中同时使用 I2C 和 SPI 驱动程序时会发生冲突
*应用程序。 修改此文件中的引脚多路复用设置并解析
*运行应用程序前发生冲突。
*
/* SPI CLK */
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P3、GPIO_PIN2);
/* MOSI/SIMO *
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P3、GPIO_PIN0);
/* MISO/SOMI *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、GPIO_PIN1);
/* SPI CLK */
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN7);
/* MOSI/SIMO *
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P3、GPIO_PIN3);
/* MISO/SOMI *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、GPIO_PIN4);
spi_init();
}
我确定 sigle SPI 驱动程序是正确的。但 如何同时使用两个驱动程序?