Пример #1
0
int main(void)
{
  FPUEnable();
  
  led_Init();
	button_Init();
  
  can_Init();
  pcsr_Init();
  
  //can_SetLogging(0, 0x001, 0x3FF, LogHandler);
  //uint8_t new_data[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
  //uint8_t new_data_mask[] = { 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF };
  //can_SetFiltering(0, 0x001, 0x3FF, new_data, new_data_mask);
  
  //uint8_t data[] = { 0xFF, 0x00, 0xFF, 0x00, '\n' };
  //pcsr_WriteData("READY!\r\n", 8);
  
  while(UARTCharsAvail(UART2_BASE))
  {
    led_Byte(UARTCharGetNonBlocking(UART2_BASE));
  }
	
  while(1)
  {
    uint8_t buf[22];
    pcsr_ReadData(buf, 1);
    if(buf[0] == FUNCTION_LOG)
    {
      pcsr_ReadData(buf + 1, 5);
      uint16_t arbid = buf[2] + (buf[3] << 8);
      uint16_t arbid_mask = buf[4] + (buf[5] << 8);
      can_SetLogging(buf[1], arbid, arbid_mask, LogHandler);
    }
    else if(buf[0] == FUNCTION_FILTER)
    {
      pcsr_ReadData(buf + 1, 21);
      uint16_t arbid = buf[2] + (buf[3] << 8);
      uint16_t arbid_mask = buf[4] + (buf[5] << 8);
      can_SetFiltering(buf[1], arbid, arbid_mask, buf + 6, buf + 14);
    }
    else if(buf[0] == FUNCTION_RESET)
    {
      can_ResetFunctions();
      //led_Byte(buf[0]);
    }
  }
}
Пример #2
0
void sys_Init(void)
{
    SystemInit();
#if CONFIG_DRIVER_WDT == 1
    wdt_init(CONFIG_WDT_PERIOD);
#endif
    time_Init();
#if CONFIG_DRIVER_LED == 1
    led_Init();
#endif
    bsp_init();
#if (CONFIG_IAR_REDIRECT == 1) || (CONFIG_TASK_SHELL == 1)
    console_Init();
#endif
#if (CONFIG_FLASH_NVM == 1)
    nvm_init();
#endif
}
Пример #3
0
/*******************************************************************************
	Routine Name:	_initPeri
	Form:			static void _initPeri( void )
	Parameters:		void
	Return value:	void
	Description:	initialize peripheral.
*******************************************************************************/
static void _initPeri( void )
{
	/*--- BLKCON ---*/
	BLKCON2 = 0xC9; // UART0
	BLKCON4 = 0x01;
	BLKCON6 = 0xC0; // 
	BLKCON7 = 0x00; // PWMC/D/E/F

	/*--- Interrupt ---*/
	irq_di();
	irq_init();
	(void)irq_setHdr( (unsigned char)IRQ_NO_PA0INT, _intPA0 );
	(void)irq_setHdr( (unsigned char)IRQ_NO_TMBINT, _intTMB );
	QPA0 = 0;
	QTMB = 0;
	EPA0 = 1;
	ETMB = 1;
	irq_ei();

	/*---- WDT ---*/
	WDTMOD = WDT_23MS; // 
	main_clrWDT();

	/*--- Clock ---*/
	clk_setSysclk();

	/*--- TBC ---*/
	(void)tb_setHtbdiv( (unsigned char)TB_HTD_1_1 );

	/*--- Timer ---*/
	tm_init( TM_CH_NO_AB );						/* Timer channel */
	tm_setABSource(TM_CS_LSCLK);					/* Operation clock */
	tm_setABData( (unsigned short)(MAIN_TIMER_CNT) );	/* Timer count value */
	tm_startAB();

	_swInit();

	/*--- LED ---*/
	led_Init();
}
Пример #4
0
int main()
{
  SYSCTL->RCGCGPIO |= 0x01; // GPIOA
  SYSCTL->RCGCUART |= 0x01; // UART0
  
  // Pins [0:1] digital enable
  GPIOA->DEN |= 0x3;
  // Pins [0:1] output
  GPIOA->DIR |= 0x3;
  // Pins [0:1] high
  //GPIOA->DATA |= 0x3;
  // Pins [0:1] alternate functionality (UART0 Rx/Tx)
  GPIOA->AFSEL |= 0x3;
  // Clear and set port mux for GPIOB pins [0:1]
  GPIOA->PCTL &= ~0xFF;
  GPIOA->PCTL |= 0x11;
  
  // Disable UART0
  UART0->CTL &= ~0x1;
  // Clear and set integer baud-rate divisor
  UART0->IBRD &= ~0xFFFF;
  UART0->IBRD |= (16000000 / (16u * 9600u)) & 0xFFFF;
  // Clear and set fractional baud-rate divisor
  UART0->FBRD &= ~0x3F;
  UART0->FBRD |= (((16000000u * 128u) / (16u * 9600u) + 1)/2) & 0x3F;
  // Clear and set line control (8-bit, no FIFOs, 1 stop bit)
  UART0->LCRH &= ~0xFF;
  UART0->LCRH |= 0x70;
  // Clear and set clock source (PIOSC)
  UART0->CC &= ~0xF;
  UART0->CC |= 0x5;
  // Enable DMA on Tx line
  // UART0->DMACTL |= 0x2;
  // Enable interrupts for data received
  // UART0->IM |= 0x10;
  // Enable loopback operation
  // UART0->CTL |= 0x80;
  // Enable UART0
  UART0->CTL |= 0x1;
  
  led_Init();
  can_Init();
  
  //can_ReadInit(0x400, 0x7F8, 4);
  
  CanPacket packet = {
    .arbid = 0x165,
    // Right Mirror Move Right
    //.data = { 0x00, 0x00, 0x00, 0x01, 0x10, 0x2C, 0x80, 0x20 },
    // Unlock doors
    .data = { 0x20, 0xC0, 0x00, 0x00, 0x10, 0x65, 0x00, 0x00 },
  };
  
  can_Loopback();
  //CanPacket packet2;
  //can_ReadBlock(&packet2);
  
  led_Set(true, false, false);
	
	
	// Init for the lists
	init_list(id_4D, 0x4D);
	init_list(id_11A, 0x11A);
	init_list(id_130, 0x130);
	init_list(id_139, 0x139);
	init_list(id_156, 0x156);
	init_list(id_165, 0x165);
	init_list(id_167, 0x167);
	init_list(id_171, 0x171);
	init_list(id_178, 0x178);
	init_list(id_202, 0x202);
	init_list(id_179, 0x179);
	init_list(id_204, 0x204);
	init_list(id_185, 0x185);
	init_list(id_25C, 0x25C);
	init_list(id_1A0, 0x1A0);
	init_list(id_200, 0x200);
	init_list(id_230, 0x230);
	init_list(id_25A, 0x25A);
	init_list(id_25B, 0x25B);
	init_list(id_270, 0x270);
	init_list(id_280, 0x280);
	init_list(id_312, 0x312);
	init_list(id_352, 0x352);
	init_list(id_365, 0x365);
	init_list(id_366, 0x366);
	init_list(id_367, 0x367);
	init_list(id_368, 0x368);
	init_list(id_369, 0x369);
	init_list(id_410, 0x410);
	init_list(id_421, 0x421);
	init_list(id_42D, 0x42D);
	init_list(id_42F, 0x42F);
	init_list(id_43E, 0x43E);
	init_list(id_440, 0x440);
	init_list(id_472, 0x472);
	init_list(id_473, 0x473);
	init_list(id_474, 0x474);
	init_list(id_475, 0x475);
	init_list(id_476, 0x476);
	init_list(id_477, 0x477);
	init_list(id_595, 0x595);
  
  while(1)
  {
    //uint8_t buf[12];
    //pc_ReadData(buf, 2);
    //led_Byte(buf[0]);
    //led_Byte(buf[1]);
    
    //UART0->DR = 'a';
    for(unsigned i = 0 ; i < 50000 ; i ++);
    can_Inject(&packet);
  }
  
  /*
  //FPUEnable();
  
  pc_comm_init();
  count = 0;
  
  // Enable clocking to peripherals
  SYSCTL->RCGCTIMER |= 1; // TIMER0
  
  // Enable TIMER0A Interrupt
  NVIC->ISER[0] |= (1 << TIMER0A_IRQn);
  
  // Kill TIMER0A
  TIMER0->CTL &= ~0x1;
  // 32 Bit timer configuration for TIMER0
  TIMER0->CFG = 0;
  // Regular, one-shot timer mode
  TIMER0->TAMR = 1;
  // .5 seconds at 16MHz
  TIMER0->TAILR = 8000000;
  // TIMER0A timeout interrupt mask
  TIMER0->IMR = 1;
  // Enable TIMER0A, enable debug stalling
  TIMER0->CTL |= 0x3;
  
  while(1){};
  */
}
Пример #5
0
void ict_Init(void)
{
	led_Init();
	led_flash(LED_GREEN);

	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;
	DAC_InitTypeDef DAC_InitStructure;

	RCC_ADCCLKConfig(RCC_PCLK2_Div8); /*72Mhz/8 = 9Mhz*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE| RCC_APB2Periph_GPIOD|
		RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOA, ENABLE);

	// IO config

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOE, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOD, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOC, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|
		GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

	// DAC config
	DAC_StructInit(&DAC_InitStructure);
	DAC_Init(DAC_Channel_1, &DAC_InitStructure);
	DAC_Cmd(DAC_Channel_1, ENABLE);

	DAC_StructInit(&DAC_InitStructure);
	DAC_Init(DAC_Channel_2, &DAC_InitStructure);
	DAC_Cmd(DAC_Channel_2, ENABLE);

	/* ADC1 config, Power Ouput Voltage sampling,
	V1 = ADC1_CH2 = PA2 = ADC123_IN2
	V2 = ADC2_CH7 = PA7 = ADC12_IN7
	*/
	ADC_DeInit(ADC1);
	ADC_StructInit(&ADC_InitStructure);
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
	ADC_InitStructure.ADC_ScanConvMode = ENABLE;
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_InitStructure.ADC_NbrOfChannel = 0;
	ADC_Init(ADC1, &ADC_InitStructure);

	ADC_InjectedSequencerLengthConfig(ADC1, 4);
	ADC_InjectedChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_55Cycles5); //9Mhz/(71.5 + 12.5) = 107.1Khz
	ADC_InjectedChannelConfig(ADC1, ADC_Channel_7, 2, ADC_SampleTime_55Cycles5);
	ADC_InjectedChannelConfig(ADC1, ADC_Channel_1, 3, ADC_SampleTime_55Cycles5); //I0
	ADC_InjectedChannelConfig(ADC1, ADC_Channel_6, 4, ADC_SampleTime_55Cycles5); //I1
	ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None);
	ADC_Cmd(ADC1, ENABLE);

	ADC_ResetCalibration(ADC1);
	while (ADC_GetResetCalibrationStatus(ADC1));
	ADC_StartCalibration(ADC1);
	while (ADC_GetCalibrationStatus(ADC1));
	ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE);

	/* ADC2 config, current sampling & over current protection
	 * I1 = ADC1_CH1 = PA1 = ADC123_IN1
	 */
	ADC_DeInit(ADC2);
	ADC_StructInit(&ADC_InitStructure);
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;
	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_Init(ADC2, &ADC_InitStructure);

	ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 1, ADC_SampleTime_71Cycles5); //9Mhz/(71.5 + 12.5) = 107.1Khz

	ADC_Cmd(ADC2, ENABLE);
	ADC_ResetCalibration(ADC2);
	while (ADC_GetResetCalibrationStatus(ADC2));
	ADC_StartCalibration(ADC2);
	while (ADC_GetCalibrationStatus(ADC2));

	ADC_AnalogWatchdogThresholdsConfig(ADC2, mA2d(100), 0x000);
	ADC_AnalogWatchdogSingleChannelConfig(ADC2, ADC_Channel_1);
	ADC_AnalogWatchdogCmd(ADC2, ADC_AnalogWatchdog_SingleRegEnable);

	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);

	//START
	ADC_ITConfig(ADC2, ADC_IT_AWD, ENABLE);
	ADC_SoftwareStartConvCmd(ADC2, ENABLE);

	/* ADC3 config, current sampling & over current protection
	 * I2 = ADC2_CH6 = PA6 = ADC12_IN6
	 */
	ADC_DeInit(ADC3);
	ADC_StructInit(&ADC_InitStructure);
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;
	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
	ADC_Init(ADC3, &ADC_InitStructure);

	ADC_RegularChannelConfig(ADC3, ADC_Channel_6, 1, ADC_SampleTime_71Cycles5); //9Mhz/(71.5 + 12.5) = 107.1Khz

	ADC_Cmd(ADC3, ENABLE);
	ADC_ResetCalibration(ADC3);
	while (ADC_GetResetCalibrationStatus(ADC3));
	ADC_StartCalibration(ADC3);
	while (ADC_GetCalibrationStatus(ADC3));
	ADC_SoftwareStartConvCmd(ADC3, ENABLE);

	ADC_AnalogWatchdogThresholdsConfig(ADC3, mA2d(100),0x000);
	ADC_AnalogWatchdogSingleChannelConfig(ADC3, ADC_Channel_6);
	ADC_AnalogWatchdogCmd(ADC3, ADC_AnalogWatchdog_SingleRegEnable);

	NVIC_InitStructure.NVIC_IRQChannel = ADC3_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);

	//START
	ADC_ITConfig(ADC3, ADC_IT_AWD, ENABLE);
	ADC_SoftwareStartConvCmd(ADC3, ENABLE);

	// TIM config
	TIM_TimeBaseStructure.TIM_Period = 100 - 1; //Fclk = 10KHz /100  = 100Hz
	TIM_TimeBaseStructure.TIM_Prescaler = 7200 - 1; //prediv to 72MHz to 10KHz
	TIM_TimeBaseStructure.TIM_ClockDivision = 0;
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
	TIM_ClearFlag(TIM2, TIM_FLAG_Update);
	TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
	TIM_Cmd(TIM2, ENABLE);

	NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);

	GPIO_ResetBits(GPIOD, GPIO_Pin_12);
	GPIO_ResetBits(GPIOD, GPIO_Pin_13);

	mbi5025_Init(&ict_mbi5025);
	mbi5025_EnableOE(&ict_mbi5025);
}
Пример #6
0
int main(void) {
  
  u8 loop = 1;
	char string[256];
	//char string1[256];
	uint16_t value;
	uint16_t sizestring;
  int icase = 0;
  initPA15();
  init_USART1(BT_BAUD);
	systick_init();
	led_Init();
	button_init();
	UART2_CONFIG(9600);// 
	DMA_CONFIG();
    
  setPA15On();
  togglePA15();
	


  while(loop){ 
    //Send data through the bluetooth communication		
			if (GPIOA->IDR & 0x0001)
			{
			if (CheckTick(delay_1,500))
			{
				delay_1 = GetTickCount();
				USART_puts(USART1, "troi oi 1 2 3 4 5 6 7 8 9 10\n");
				led12();
			}
			}
			if (CheckTick(delay_2,1000))
			{
					delay_2 = GetTickCount();
					//led13();
			}
			if (CheckTick(delay_3,5000))
			{
				delay_3 = GetTickCount();
				led14();
			}
			
			if (CheckTick(delay_4,100))
			{
				delay_4 = GetTickCount();
				while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
				//while(DMA_GetFlagStatus(DMA1_Stream2,DMA_FLAG_TCIF1) == RESET);
				value = USART_ReceiveData(USART1);
				memset(string,0,sizeof(string[0])*256); // Clear all to 0 so string properly represented
				sprintf(string,"%c",value);
				//sizestring = sizeof(string);
				//sprintf(string1,"%c",sizestring);
				if (string != NULL)
				{

					//USART_puts(USART1,string);
					if 			(string != NULL) icase = 1;
					else if (memchr(string, '2', sizeof(string))) icase = 2;
					else if (memchr(string, '3', sizeof(string))) icase = 3;
					else if (memchr(string, '4', sizeof(string))) icase = 4;
					else if (memchr(string, '5', sizeof(string))) icase = 5;
					//else icase = 6;
					switch (icase)
					{
						case 1:
						{
							USART_puts(USART1,string);
							icase = 0;
							led15();
						}
						break;
						case 2:
						{
							USART_puts(USART1,"di xuong");
							icase = 0;
							//led14();
						}
						break;
						case 3:
						{
							USART_puts(USART1,"sang trai");
							icase = 0;
							//led13();
						}
						break;
						case 4:
						{
							USART_puts(USART1,"sang phai");
							icase = 0;
						}
						break;
						case 5:
						{
							USART_puts(USART1,"can bang");
							icase = 0;
						}
						break;
//						case 6:
//						{
//							//USART_puts(USART1,string);
//							icase = 0;
//						}
//						break;
						default: break;
						
					}
					
					//usart_send_string(string);
					//USART_SendData(USART1,value);
				}
				else
				{
					//usart_send_string(string);
				}
				led15();
			}
			if (CheckTick(delay_5,250))
		{
			delay_5 = GetTickCount();
		}
    /* Disable the UART connection */
    //USART_Cmd(USART1, DISABLE);
}
}