示例#1
0
/**
  * @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
      }
  }
}
示例#2
0
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();
		}
  }
}
示例#4
0
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
    
  }
}
示例#5
0
/**
  * @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);
//        
//      }
  }
}