/* * 函数名:main * 描述 :主函数 * 输入 :无 * 输出 :无 */ int main(void) { SystemInit(); USART1_init();//USART初始化 SPI1_init() ;//SPI初始化 DW1000_init();//DW1000初始化 TIM3_init(); //定时器3初始化 EXTI_init(); //外部中断初始化 TIM4_init(); RX_mode_enable(); printf("RX!\r\n"); printf("**********************************\r\n"); while (1) { ; } }
BOOL spiflash_cycletest(void) { Uint8 buff[1] = {0xCC}; printf("%d ", buff[0]); int i; SPI_SPIBUF; Uint8 *test_pointer2; test_pointer2=(Uint8*)(0x01F0E040); //SPI1BUF //Uint8 *test_pointer1; //test_pointer1=(Uint8*)(0x01F0E03C); SPI1_init(); for(i=0; i<1; i++) { while( SPI_SPIBUF & 0x80000000 ); //if(!(SPI_SPIBUF & ( 0x80000000 )) ) //{ buff[0] = *test_pointer2; printf("%d ", buff[0]); //} //else //break; } if(buff[0] == 0xA0) { SPI_SPIDAT1 = (spidat1 & 0x0ffcffff) | buff[0]; return TRUE; } else return FALSE; }
void SPI_init(){ switch(Current_SPI){ case SPI1: SPI1_init(); break; case SPI2: SPI2_init(); break; default: return; // error } }
int main(void) { u8 dip_config; SystemInit(); // Init USB for Master Nodes #if defined(RX4) || defined(RX5) || defined(RX6) Set_System(); Set_USBClock(); USB_Interrupts_Config(); USB_Init(); #endif dip_config = Read_DIP_Configuration(); // USART1初始化,波特率115200,单次8比特,无奇偶校验,1停止位:用于上位机下发命令 USART1_init(dip_config); // 串口监听 TIM4_init(); //InitMPU6050(); SPI1_init(); TIM3_init(); GPIO_Configuration(); DW1000_init(dip_config); EXTI_init(); #ifdef TX TIM2_init(); // LS Poll Cycle #endif RX_mode_enable(); DEBUG1(("=====Init Done, with DIP config: %02X=====\r\n", dip_config)); while(1) { ; } }
void main() { __builtin_disable_interrupts(); // set the CP0 CONFIG register to indicate that kseg0 is cacheable (0x3) __builtin_mtc0(_CP0_CONFIG, _CP0_CONFIG_SELECT, 0xa4210583); // 0 data RAM access wait states BMXCONbits.BMXWSDRM = 0x0; // enable multi vector interrupts INTCONbits.MVEC = 0x1; // disable JTAG to get pins back DDPCONbits.JTAGEN = 0; // do your TRIS and LAT commands here TRISA = 0xFFCF; TRISB = 0b0001111001110011; i2c_master_setup(); ANSELBbits.ANSB2 = 0; //SDA2 set to digital ANSELBbits.ANSB3 = 0; //SCL2 set to digital __builtin_enable_interrupts(); // SYSTEMConfigPerformance(48000000); SPI1_init(); LCD_init(); LCD_clearScreen(0); // RPB13Rbits.RPB13R = 0b0011; //SDO // SDI1Rbits.SDI1R = 0b0000; //A1 RPB7Rbits.RPB7R = 0b0101; //OC1 RPB8Rbits.RPB8R = 0b0101; //OC2 PORTAbits.RA4 = 1; //led init T2CONbits.TCKPS = 2; //timer 2 prescale = 1:4 PR2 = 1999; //period = (PR2+1) * N * 12.5 ns = 100 us, 10 kHz TMR2 = 0; OC1RS = 1000; OC1R = 1000; OC2RS = 1000; OC2R = 1000; OC1CONbits.OCTSEL = 0; //select timer2 OC2CONbits.OCTSEL = 0; OC1CONbits.OCM = 0b110; //set pwm mode OC2CONbits.OCM = 0b110; T2CONbits.ON = 1; OC1CONbits.ON = 1; OC2CONbits.ON = 1; unsigned char x = 0; //sine counter unsigned char y = 0; //triangle counter char pressed = 0; //for tracking button logic char counter = 0; char m = 100; //(triangle wave frequency is 1000/2m) unsigned char voltage = 0; unsigned char channel = 0; int bytes = 14; unsigned char i2cdata[bytes]; unsigned char i2cdatatest; unsigned char i2cwhoami; short temp = 0; short accel_x = 0; short accel_y = 0; short accel_z = 0; short gyro_x = 0; short gyro_y = 0; short gyro_z = 0; char i2cdatacount = 0; char textbuffer[20]; char length = 0; i2cwhoami = i2c_master_read(GYRO,WHOAMI,0,0); i2c_master_write(GYRO,CTRL1_XL,0b10000000,0); i2c_master_write(GYRO,CTRL2_G,0b10000000,0); i2c_master_write(GYRO,CTRL3_C,0b00000100); //i2cdatatest = i2c_master_read(GYRO,CTRL1_XL,0,0); // i2c_master_write(GYRO,CTRL1_XL,0b10000000,1); // i2c_master_send(0b10000000); // i2c_master_send(0b00000100); // i2c_master_stop(); CS = 1; int leet = 1337; sprintf(textbuffer,"Hello world %d!",leet); char text[2] = {'H','6'}; //int text[5] = {40,30,50,30,20}; LCD_clearScreen(0); while(1) { length = sizeof(textbuffer);//size must be taken here otherwise pointer size is taken instead of LCD_type(28,32,textbuffer,length,0b1111100000000000); //LCD_char(28,32,30,0b1111100000000000); i2c_master_multiread(GYRO,OUT_TEMP_L,bytes,i2cdata); // //i2cdatatest = i2c_master_read(GYRO,0x28,0,0); temp = i2cdata[1]; temp = (temp<<8)|i2cdata[0]; temp = (unsigned short)temp; gyro_x = i2cdata[3]; gyro_x = (gyro_x<<8)|i2cdata[2]; gyro_x = (unsigned short)gyro_x; gyro_y = i2cdata[5]; gyro_y = (gyro_y<<8)|i2cdata[4]; gyro_y = (unsigned short)gyro_y; gyro_z = i2cdata[7]; gyro_z = (gyro_z<<8)|i2cdata[6]; gyro_z = (unsigned short)gyro_z; accel_x = i2cdata[9]; accel_x = (i2cdata[9]<<8)|i2cdata[8]; accel_x = (unsigned short)accel_x; accel_y = i2cdata[11]; accel_y = (i2cdata[11]<<8)|i2cdata[10]; accel_y = (unsigned short)accel_y; accel_z = i2cdata[13]; accel_z = (accel_z<<8)|i2cdata[12]; accel_z = (unsigned short)accel_z; OC1RS = floor((accel_x/16.768)); OC2RS = floor((accel_y/16.768)); if(OC1RS>2999){ OC1RS = 2000; } else if(OC1RS<1000){ OC1RS = 0; } else{ OC1RS = OC1RS - 1000; } if(OC2RS>2999){ OC2RS = 2000; } else if(OC2RS<1000){ OC2RS = 0; } else{ OC2RS = OC2RS - 1000; } // OC1R = floor((gyro_x/3.2768 + 10000)); // OC2R = floor((gyro_y/3.2768 + 10000)); //-------------SPI debugging for IMU------------------ // if (!PORTBbits.RB4){ // CS = 0; // channel = counter; // //voltage = floor(100*sin((x*2*pi)/100)+100); // voltage = i2cwhoami; // //char voltage = 0b10101001; // spi1_set(channel,voltage); // //delay(6000); // CS = 1; // } // else { // CS = 0; // channel = counter; // //voltage = floor(100*sin((x*2*pi)/100)+100); // voltage = i2cdata[0]; // //char voltage = 0b10101001; // spi1_set(channel,voltage); // //delay(6000); // CS = 1; // //++i2cdatacount %14; // } //------------------------------------------------------- delay(960000); } }