2019-03-24 16:07发布
void SPI_Init(void){ long i; SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI ); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA|SYSCTL_PERIPH_GPIOF ); GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_2); GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_3); GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_4); GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_5); // SSIDisable(SSI_BASE ); i=SysCtlClockGet(); SSIConfigSetExpClk(SSI0_BASE, i, SSI_FRF_MOTO_MODE_2, SSI_MODE_SLAVE, i/10, 16); SSIIntEnable(SSI_BASE ,SSI_RXTO|SSI_RXFF); SSIEnable(SSI_BASE);// SSI 管理方式 while(SSIDataGetNonBlocking(SSI0_BASE, SSIBUF)){ } // // Enable the SSI interrupt. // IntEnable(INT_SSI0);// PTF0- 输入SS 数据包开始标志 GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_0); GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); GPIOPinIntEnable(GPIO_PORTF_BASE,GPIO_PIN_0); IntEnable(INT_GPIOF);}
void SPI_ISR(void){ unsigned long ulStatus; ulStatus = SSIIntStatus(SSI_BASE,true); SSIIntClear(SSI_BASE,ulStatus); SPI++; if((ulStatus & SSI_RXFF)|(ulStatus & SSI_RXTO)){ while(1){ if (SSIDataGetNonBlocking(SSI_BASE,&SSIBUF[SSISP++])) ; else{ if (SSISP>=14) { SSISP=0; SPI=0;} break; } } }}
最多设置5个标签!
void SPI_Init(void){
long i;
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI );
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA|SYSCTL_PERIPH_GPIOF );
GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_2);
GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_3);
GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_4);
GPIOPinTypeSSI(GPIO_PORTA_BASE ,GPIO_PIN_5);
// SSIDisable(SSI_BASE );
i=SysCtlClockGet();
SSIConfigSetExpClk(SSI0_BASE, i, SSI_FRF_MOTO_MODE_2,
SSI_MODE_SLAVE, i/10, 16);
SSIIntEnable(SSI_BASE ,SSI_RXTO|SSI_RXFF);
SSIEnable(SSI_BASE);
// SSI 管理方式
while(SSIDataGetNonBlocking(SSI0_BASE, SSIBUF)){
}
//
// Enable the SSI interrupt.
//
IntEnable(INT_SSI0);
// PTF0- 输入SS 数据包开始标志
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,GPIO_PIN_0);
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOPinIntEnable(GPIO_PORTF_BASE,GPIO_PIN_0);
IntEnable(INT_GPIOF);
}
void SPI_ISR(void){
unsigned long ulStatus;
ulStatus = SSIIntStatus(SSI_BASE,true);
SSIIntClear(SSI_BASE,ulStatus);
SPI++;
if((ulStatus & SSI_RXFF)|(ulStatus & SSI_RXTO)){
while(1){
if (SSIDataGetNonBlocking(SSI_BASE,&SSIBUF[SSISP++])) ;
else{
if (SSISP>=14) { SSISP=0; SPI=0;}
break;
}
}
}
}
一周热门 更多>