/** * @brief Main program * @param None * @retval None */ int main(void) { RCC_Configuration(); GPIO_Configuration(); CAN_Configuration(); TIM4_Configuration(); CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); //CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE); USART_Config(USART1); USART_Cmd(USART1, ENABLE); USART_Config(UART4);////////Rs232 USART_Cmd(UART4, ENABLE); //GPIO_ResetBits(GPIOB, GPIO_Pin_8|GPIO_Pin_9); //GPIO_SetBits(GPIOB, GPIO_Pin_6|GPIO_Pin_7); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_ITConfig(UART4, USART_IT_RXNE, ENABLE); NVIC_Configuration(); //USART_ITConfig(USART2, USART_IT_RXNE, DISABLE); while (1) { if(rec_f==1) { rec_f=0; /* TxMessage.ExtId=0x1210; TxMessage.RTR=CAN_RTR_DATA; TxMessage.IDE=CAN_ID_STD; TxMessage.DLC=5; TxMessage.Data[0]=TxBuffer1[1]; TxMessage.Data[1]=TxBuffer1[2]; TxMessage.Data[2]=TxBuffer1[3]; TxMessage.Data[3]=TxBuffer1[4]; TxMessage.Data[4]=TxBuffer1[5];*/ //CAN_Transmit(CAN1, &TxMessage); //*******USART_ITConfig(USARTy, USART_IT_RXNE, ENABLE); 防止接收太快,导致发送的数据不准确 //UART_OUT(&TxBuffer1[0],6); //用rs485把 初始距离数据传出去 TxMessage.ExtId=0x111214; TxMessage.RTR=CAN_RTR_DATA; TxMessage.IDE=CAN_ID_EXT; TxMessage.DLC=8; for(n=0,m=0;n<6;n++,m++) { switch( TxBuffer1[n]) { case 0x30:TxMessage.Data[m]=0x0; break; case 0x31:TxMessage.Data[m]=0x01; break; case 0x32:TxMessage.Data[m]=0x02; break; case 0x33:TxMessage.Data[m]=0x03; break; case 0x34:TxMessage.Data[m]=0x04; break; case 0x35:TxMessage.Data[m]=0x05; break; case 0x36:TxMessage.Data[m]=0x06; break; case 0x37:TxMessage.Data[m]=0x07; break; case 0x38:TxMessage.Data[m]=0x08; break; case 0x39:TxMessage.Data[m]=0x09; break; } } CAN_Transmit(CAN1, &TxMessage); //这里是将距离值的1000被传给DSP 通过CAN 比如距离是18.555 传给DSP 是18555 } } }
void init(void) { SystemInit(); //Setup SystickTimer if (SysTick_Config(SystemCoreClock / 1000)){ColorfulRingOfDeath();} GPIO_Configuration(); #ifdef USE_MICROUSB USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb); #endif #ifdef USE_SDIO UB_Fatfs_Init(); #endif #ifdef USE_ADC ADC_Configuration(); #endif #ifdef USE_I2C I2C_Configuration(); #endif #ifdef USE_SPI SPI_Configuration(); #endif #ifdef USE_ENCODER TIM_encoder_Configuration(); #endif #ifdef USE_USART1 USART1_Configuration(); #endif #ifdef USE_USART2 USART2_Configuration(); #endif #ifdef USE_USART3 USART3_Configuration(); #endif #ifdef USE_CAN CAN_Configuration(); #endif #ifdef USE_PWM TIM_pwm_Configuration(); #endif #ifdef USE_EXTI EXTI_Configuration(); #endif NVIC_Configuration(); }
int main(void) { while (1); /* Configuration */ SystemInit(); LED_Configuration(); BUZZ_Configuration(); //ADC_Configuration(); CAN_Configuration(); /****************************µ×Å̳õʼ»¯******************************/ Elmo_Init(elmo, 3); // PositionPID_Init(); PositionIPD_Init(); MoveLock(); Delay_ms(100); BLUETOOTH_Configuration(); Delay_ms(100); Encoder_Clear(); Delay_ms(1000); MPU6500_init(); TIM1_Configuration(); TIM2_Configuration(); TIM3_Configuration(); TIM4_Configuration(); if (SysTick_Config(SystemCoreClock / 1000)) /* Setup SysTick Timer for 1 msec interrupts */ { while(1){LED_ON(LED2);}/* Capture error */ } // IpdAxisX.setpoint = 200; // IpdAngle.setpoint = 90; // PidAxisX.setpoint = 200; // CMDVelocity.X = 10; // CMDVelocity.Y = 0; // CMDVelocity.A = 0;//Degree/Second // Elmo_Write(&elmo[0],0x01,0x01,50); while (1) { if(MPU_FLAG == 1) { MPU_FLAG = 0; } if(MAPAN_FLAG == 1) { MAPAN_FLAG = 0; // LED_TOGGLE(LED1); MapanTask();//ÂëÅÌ } if(PID_PFLAG ==1) { PID_PFLAG = 0; // PositionPIDCal(); PositionIPDCal(); VelocityTransform(); // LED_TOGGLE(LED2); } if (LED_FLAG == 1) { LED_FLAG = 0; // SquareTracking(); // CircleTracking(); // GoBack(); // LED_TOGGLE(LED3); // SignalTracking(); // angle_print(); // PositionVelocity_print(); } } }
int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this i s done through SystemInit() function which is called from startup file (startup_stm32f10x_xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f10x.c file */ //GPIO_InitTypeDef GPIO_InitStructure; //uint32_t irq; //test IRQ /* System clocks configuration ---------------------------------------------*/ SystemInit(); RCC_Configuration(); /* GPIO configuration ------------------------------------------------------*/ GPIO_Configuration(); GPIO_WriteBit(CANTX_LED, Bit_SET); GPIO_WriteBit(CANRX_LED, Bit_SET); GPIO_WriteBit(COMTX_LED, Bit_SET); GPIO_WriteBit(COMRX_LED, Bit_SET); GPIO_WriteBit(PWR_LED, Bit_RESET); GPIO_WriteBit(ALARM_LED, Bit_SET); GPIO_WriteBit(RUNSTAT_LED, Bit_SET); GPIO_WriteBit(ETH_RESET, Bit_RESET);//拉低DM9000 nRST, 延时复位启动 DataBase_Init(DevIPAddressTab); #ifndef TEST /* com1 configuration ------------------------------------------------------*/ COM1_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_RESET); GPIO_WriteBit(CANRX_LED, Bit_SET); GPIO_WriteBit(COMTX_LED, Bit_SET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< COM1 config complete <<<<<<<\r\n\r\n"); /* com2 configuration ------------------------------------------------------*/ //COM2_Configuration(); #endif /* i2c configuration ------------------------------------------------------*/ printf(" >>>>>>> I2C config begin >>>>>>>\r\n"); I2C_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_SET); GPIO_WriteBit(CANRX_LED, Bit_RESET); GPIO_WriteBit(COMTX_LED, Bit_SET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< I2C config complete <<<<<<<\r\n\r\n"); #ifndef TEST /* RTC configuration--------------------------------------------------------*/ printf(" >>>>>>> RTC config begin >>>>>>>\r\n"); RTC_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_RESET); GPIO_WriteBit(CANRX_LED, Bit_RESET); GPIO_WriteBit(COMTX_LED, Bit_SET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< RTC config complete <<<<<<<\r\n\r\n"); #endif #ifdef CAN_APP /* can configuration ------------------------------------------------------*/ printf(" >>>>>>> CAN config begin >>>>>>>\r\n"); CAN_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_SET); GPIO_WriteBit(CANRX_LED, Bit_SET); GPIO_WriteBit(COMTX_LED, Bit_RESET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< CAN config complete <<<<<<<\r\n\r\n"); #endif #ifndef TEST /*temperature configuration------------------------------------------------------*/ printf(" >>>>>>> TEMPMEA config begin >>>>>>>\r\n"); TEMPMEA_Confitguration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_SET); GPIO_WriteBit(CANRX_LED, Bit_RESET); GPIO_WriteBit(COMTX_LED, Bit_RESET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< TEMPMEA config complete <<<<<<<\r\n\r\n"); #endif /* SysTick configuration ------------------------------------------------------*/ printf(" >>>>>>> SysTick config begin >>>>>>>\r\n"); SysTick_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_RESET); GPIO_WriteBit(CANRX_LED, Bit_RESET); GPIO_WriteBit(COMTX_LED, Bit_RESET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< SysTick config complete <<<<<<<\r\n\r\n"); /* NVIC configuration ------------------------------------------------------*/ printf(" >>>>>>> NVIC config begin >>>>>>>\r\n"); NVIC_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_SET); GPIO_WriteBit(CANRX_LED, Bit_SET); GPIO_WriteBit(COMTX_LED, Bit_SET); GPIO_WriteBit(COMRX_LED, Bit_RESET); #endif printf(" <<<<<<< NVIC config complete <<<<<<<\r\n\r\n"); /* Update the SysTick IRQ priority should be higher than the Ethernet IRQ */ /* The Localtime should be updated during the Ethernet packets processing */ NVIC_SetPriority (SysTick_IRQn, 1); /* test IRQ*/ // irq = NVIC_GetPriority(SysTick_IRQn); // irq = NVIC_GetPriority(ETH_IRQn); // irq = NVIC_GetPriority(I2C1_ER_IRQn); // irq = NVIC_GetPriority(I2C1_EV_IRQn); /* ethernet configuration ------------------------------------------------------*/ //可添加延时, 用以确保DM9000启动时电压满足芯片要求 //"nRST must not go high until after the VDDIO and VDD_CORE supplies are stable" 手册P51 GPIO_WriteBit(ETH_RESET, Bit_SET); //拉高DM9000 nRST, 复位启动 printf(" >>>>>>> ETH config begin >>>>>>>\r\n"); Ethernet_Configuration(); #ifdef TEST_PARTS GPIO_WriteBit(CANTX_LED, Bit_RESET); GPIO_WriteBit(CANRX_LED, Bit_SET); GPIO_WriteBit(COMTX_LED, Bit_RESET); GPIO_WriteBit(COMRX_LED, Bit_SET); #endif printf(" <<<<<<< ETH config complete <<<<<<<\r\n\r\n"); #ifdef WATCHDOG /* WATCHDOG configuration ------------------------------------------------------*/ IWDG_Configuration(); #endif //判断是否有以太网链接 if(EthInitState) { CommunicationInit(); } printf(" ******* 输入'$'将触发串口控制台!*******\r\n\r\n"); GPIO_WriteBit(CANTX_LED, Bit_SET); GPIO_WriteBit(CANRX_LED, Bit_SET); GPIO_WriteBit(COMTX_LED, Bit_SET); GPIO_WriteBit(COMRX_LED, Bit_SET); //启动完成, 进入常规流程 #ifdef _TEST uint8_t test = 0; #endif while (1) { Di_PostWork(); LwIP_Periodic_Handle(LocalTime); Task_Periodic_Handle(LocalTime); //判断以太网状态, 决定是否要复位以太网 EthStateCheck(); reset_flag = Get_eth_reset_flag(); if(reset_flag == Ethernet_SWRST_FLAG) Ethernet_SWRST(); else if(reset_flag == Ethernet_HWRST_FLAG) Ethernet_HWRST(); #ifdef _TEST //tyh:20130407 eth reset test if((DiStatus_DI[1].Value != test)&&(DiStatus_DI[1].Value == 1)) { //eth_reg = ETH_ReadPHYRegister(0x1F, 17); Ethernet_HWRST(); } test = DiStatus_DI[1].Value; #endif // else // { // if( EthLinkCheck() ) // { // //tyh:20130403 send udp test_message // if((DiStatus_DI[1].Value != test)&&(DiStatus_DI[1].Value == 1)) // { // Udp_timing_test(); // } // // test = DiStatus_DI[1].Value; // } // } #ifdef WATCHDOG WDGFeeding(); #endif } }
/** * @brief Main program * @param None * @retval None */ int main(void) { RCC_Configuration(); GPIO_Configuration(); CAN_Configuration(); NVIC_Configuration(); //TIM4_Configuration(); //CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); //CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE); USART_Config(USART1); USART_Cmd(USART1, ENABLE); USART_Config(USART3); USART_Cmd(USART3, ENABLE); //GPIO_ResetBits(GPIOB, GPIO_Pin_8|GPIO_Pin_9); //GPIO_SetBits(GPIOB, GPIO_Pin_6|GPIO_Pin_7); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //USART_ITConfig(USART2, USART_IT_RXNE, DISABLE); while (1) { if(send_data_flag==TRUE) { send_data_flag=FALSE; USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); TxMessage.ExtId=0x111215; TxMessage.RTR=CAN_RTR_DATA; TxMessage.IDE=CAN_ID_EXT; TxMessage.DLC=8; if(distance_valid_flag==TRUE) { TxMessage.Data[0]=0xaa; } else { TxMessage.Data[0]=0xff; } TxMessage.Data[1]=y_bias; TxMessage.Data[2]=0x00; TxMessage.Data[3]=0x00; TxMessage.Data[4]=0x00; TxMessage.Data[5]=0x00; TxMessage.Data[6]=0x00; TxMessage.Data[7]=y_bias; CAN_Transmit(CAN1, &TxMessage); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); } // for(n=0;n<8;n++) // { // TxMessage.Data[n]=RxBuffer1[n]; // } // CAN_Transmit(CAN1, &TxMessage); // // } } }