// ----SPI模块片选拉低------------------------------------------- //功能:目前仅提供SPI1片选,适用于WB9260板 //参数:SPIx SPI模块选择 // tgCsSel 片选信号 //返回:true=成功,false=失败 // -------------------------------------------------------------- bool_t Spi_ActiveCS(volatile tag_SpiReg * tpSpi,ufast_t ufCsNo) { if(tpSpi == g_ptSpi0Reg) { if( true != SPI_WaitFor(tpSpi) ) { return false; } switch (ufCsNo) { case SPI_CS0: sysreg_bit_clr( sysreg_FLAGS, FLG4 ); //拉低ss0线 FLASH break; case SPI_CS1: sysreg_bit_clr( sysreg_FLAGS, FLG5 ); //拉低ss1线 FLASH break; case SPI_CS2: sysreg_bit_clr( sysreg_FLAGS, FLG6 ); //拉低ss2线 RTC break; default: return false; } return true; } else if(tpSpi == g_ptSpi1Reg) { return false; } else return false; }
//Timer interrupt service routine void timer_isr (int sig) { Sint16 iCounter; Uint16 UART_crc; float aa = 1.0; sysreg_bit_set(sysreg_FLAGS,FLG2);//флаг измерения длительности процесса. sysreg_bit_set(sysreg_FLAGS,FLG1); //WrDACX();//Запись в ЦАП компенсации WrDACY();//Запись в ЦАП компенсации Delay(125);//1.6uS sysreg_bit_clr(sysreg_FLAGS,FLG1); RdADC(); //Считывание и преобраз. в float АЦП пучности и узла + формир.LDAC ЦАП. // Выход: // (global_andata) = значение пучности float // (global_ndata) = значение узла float RdTEMP();//Считывание и преобраз. в float значения температуры. //Выход: //(global_TEMP) = значение температуры float // *************************** Gyro.in_Ux = global_andata; Gyro.in_Uy = global_ndata; Gyro.Temperature = global_TEMP; Run_Algo( &Gyro ); global_DACX = Gyro.out_Ux; global_DACY = Gyro.out_Uy; if ( Gyro.isUART_DataPresent == 1 ) { Gyro.isUART_DataPresent = 0; global_flagpack = 1; ForPack2(); } // *************************** //WrDACY();//Запись в ЦАП возбуждения WrDACX();//Запись в ЦАП возбуждения //Вход: //(global_DACX) = значение возбуждения float //(global_DACY) = значение Компенсации float WrUART2();//Данные заносить в буфер global_UARTbuf[48] // Передача пакета иниц.записью данных # 0 в global_flagpack sysreg_bit_clr(sysreg_FLAGS,FLG2); }
int main( void ) { /****************UART SET*******************/ *pPICR2 &= ~(0x1F); //Sets the UART0 receive interrupt to P12 *pPICR2 |= (0x13<<0); initPLL_DDR2(); *pUART0LCR=0; *pUART0IER = UARTRBFIE; // enables UART0 receive interrupt /****************SYS INIT*******************/ initDPI(); initUART(); Init_LEDs(); Init_PushButtons(); sysreg_bit_clr(sysreg_MODE1, IRPTEN ); /* disable global interrupts */ /* unmask individual interrupts */ (*pDAI_IRPTL_PRI) = (SRU_EXTMISCA1_INT | SRU_EXTMISCA2_INT); /* make sure interrupts latch on the rising edge */ (*pDAI_IRPTL_RE) = (SRU_EXTMISCA1_INT | SRU_EXTMISCA2_INT); /* setup the IRQ pins to use the pushbuttons */ (*pSYSCTL) |= (IRQ1EN | IRQ2EN); sysreg_bit_set(sysreg_MODE2, (IRQ1E | IRQ2E) ); /* enable IRQ interrupts and make DAI interrupts high priority */ sysreg_bit_set(sysreg_IMASK, (IRQ1I | IRQ2I | DAIHI) ); sysreg_bit_clr(sysreg_IMASKP, (IRQ1I | IRQ2I | DAIHI) ); sysreg_bit_set(sysreg_LIRPTL, P12IMSK ); sysreg_bit_clr(sysreg_LIRPTL, P12IMSKP ); sysreg_bit_clr(sysreg_IRPTL, (IRQ1I | IRQ2I) ); sysreg_bit_clr(sysreg_LIRPTL, P12I ); /* register the interrut handlers */ Int_Init(); Int_IsrConnect(cn_int_line_IRQ2I,SW9_IRQ2_handler); Int_RestoreRealLine(cn_int_line_IRQ2I); Int_IsrConnect(cn_int_line_IRQ1I,SW8_IRQ1_handler); Int_RestoreAsynLine(cn_int_line_IRQ1I); Int_IsrConnect(cn_int_line_DAII,__int_engine_dai); Int_RestoreAsynLine(cn_int_line_DAII); Int_IsrConnect(cn_int_line_P12I,UARTisr); Int_RestoreAsynLine(cn_int_line_P12I); Int_CutTrunk(); Int_ContactTrunk(); sysreg_bit_clr(sysreg_IRPTL, (IRQ1I | IRQ2I) ); NOP;NOP; sysreg_bit_clr(sysreg_LIRPTL, P12I ); NOP;NOP; sysreg_bit_set(sysreg_MODE1, NESTM ); /* enable interrupts nest */ sysreg_bit_set(sysreg_MODE1, IRPTEN ); /* enable global interrupts */ // 测试通过 // atom_high_test=Int_HighAtomStart(); // Int_HighAtomEnd(atom_high_test); // atom_low_test=Int_LowAtomStart(); // Int_LowAtomEnd(atom_low_test); // 测试通过 Int_TapLine(cn_int_line_IRQ2I); // Int_TapLine(cn_int_line_DAII); // Int_TapLine(cn_int_line_P12I); Int_TapLine(cn_int_line_IRQ1I); // 测试通过 // bool_value=Int_QueryLine(cn_int_line_IRQ2I); // bool_value=Int_QueryLine(cn_int_line_IRQ1I); // bool_value=Int_QueryLine(cn_int_line_DAII); // bool_value=Int_QueryLine(cn_int_line_P12I); // 测试通过 // Int_CutLine(cn_int_line_SFT3I); // Int_CutLine(cn_int_line_P17I); // Int_CutLine(cn_int_line_IRQ2I); /****************UART TEST******************/ xmitUARTmessage(welcomemessage,sizeof(welcomemessage)); xmitUARTmessage("CYG Copyright \n\r",sizeof("CYG Copyright \n\r")); while(1) { Blink_LED(10000000); // Int_TapLine(cn_int_line_IRQ2I); // xmitUARTmessage("CYG Copyright \n\r",sizeof("CYG Copyright \n\r")); // Int_TapLine(cn_int_line_DAII); } /* Begin adding your custom code here */ return 0; }