Ejemplo n.º 1
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
	RCC_ClocksTypeDef RCC_Clocks;


  /* SysTick end of count event each 10ms */
  RCC_GetClocksFreq(&RCC_Clocks);
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);
	
	/********************输出 初始化 ******************/
	PWM_init();
  
	
	STM324xG_LCD_Init();	
  LCD_Clear(BLACK);/* Clear the LCD */
  LCD_SetBackColor(BLACK);/* Set the LCD Back Color */  
  LCD_SetTextColor(WHITE);/* Set the LCD Text Color */	
  LCD_DisplayStringLine(LINE(0), "  Hello jaja. I'm xiaohei01");
	
	
	/********************输入 初始化 ******************/
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/*!< 3 bits for pre-emption priority 1 bits for subpriority */	
	
	Encoder_init();	//encoder tim8	
	usart_init();//通信COM usart2 115200
	
	IMU_init();	
	if (get_mode()==1)
	{
		IMU_BE10();
	}
	
	KEY_init();		
	AD_Init();	
	GPS_int();

	TIM2_Configuration();
	printf("uart init OK 2 \r\n");

	
while(1)
  {


	if(LCD_flag)
	{
		LCD_flag=0;
		lcd_refresh();
	}


  }  
}
Ejemplo n.º 2
0
Archivo: main.c Proyecto: kisieel/cFOF
int main()
{
	uint32_t data1, data2;
	
	SYS_TICK_init();
	
	data1 = SYS_TICK_timeOut(0,0);
	while (SYS_TICK_timeOut(1, data1) < 1000);
	
	// Keep power supply
	RCC->AHBENR |= RCC_AHBENR_GPIOAEN;            // Clock for GPIOA
	GPIO_config(0x0A, 3, GPIO_MODE_GP, GPIO_PULL_Floating, GPIO_TYPE_Pushpull, GPIO_SPEED_400k, 0);	
	GPIO_config(0x0A, 7, GPIO_MODE_GP, GPIO_PULL_Floating, GPIO_TYPE_Pushpull, GPIO_SPEED_400k, 0);
	Power3VOn;
	Power5VOn;
	
	KEY_init();
	MENU_init();
	USART_init();
	
#ifdef USART_debug
	USART_send("Peripherals initialized.\n");
#endif
	
	RFM69W_init();
	_BUZZER_init();
	_LED_init();
	_LED_off();

#ifdef USART_debug
	USART_send("External devices initialized.\n");
#endif


	// Block device while the power button is still pressed
	while(GPIOA->IDR & GPIO_IDR_IDR_0);

	_BUZZER_alarm_set_vol_list(2);
	_BUZZER_alarm_set_tone_list(2);
	_BUZZER_alarm_set_tempo_list(2);

	for(;;) {
		_actual->menu_fun(GetKeys());
		
		// Holding key for GoUpTime will make menu to go up, to level 0
		if (GPIOA->IDR & GPIO_IDR_IDR_2) {
			data2 = SYS_TICK_timeOut(0, 0);
			while (GPIOA->IDR & GPIO_IDR_IDR_2) {
				// Keep blinking
				if (_actual == _Syg_1_menu || _actual->par == _Syg_1_menu)
					_LED_blink_on(MENU_LED_SYG1);
				if (_actual == _Syg_2_menu || _actual->par == _Syg_2_menu)
					_LED_blink_on(MENU_LED_SYG2);
				if (_actual == _Syg_3_menu || _actual->par == _Syg_3_menu)
					_LED_blink_on(MENU_LED_SYG3);
				if (_actual == _Syg_4_menu || _actual->par == _Syg_4_menu)
					_LED_blink_on(MENU_LED_SYG4);
				
				if (SYS_TICK_timeOut(1, data2) > GoUpTime) {
					_LED_set_color(MENU_LED_Menu, 0, 0, 0);
					_LED_on();
	#ifdef USART_debug
					USART_send("Going up to level 0.\n");
	#endif
					_actual = _actual->par;
			}
		}
	}
		
		// Holding key for TurnOffTime will make device to turn off
		if (GPIOA->IDR & GPIO_IDR_IDR_0) {
			data1 = SYS_TICK_timeOut(0, 0);
			while (GPIOA->IDR & GPIO_IDR_IDR_0) {
				// Keep blinking
				if (_actual == _Syg_1_menu || _actual->par == _Syg_1_menu)
					_LED_blink_on(MENU_LED_SYG1);
				if (_actual == _Syg_2_menu || _actual->par == _Syg_2_menu)
					_LED_blink_on(MENU_LED_SYG2);
				if (_actual == _Syg_3_menu || _actual->par == _Syg_3_menu)
					_LED_blink_on(MENU_LED_SYG3);
				if (_actual == _Syg_4_menu || _actual->par == _Syg_4_menu)
					_LED_blink_on(MENU_LED_SYG4);
				
				if (SYS_TICK_timeOut(1, data1) > TurnOffTime) {
					_LED_off();
#ifdef USART_debug
					USART_send("Power off detected. System backed up. Switching off.\n");
#endif
					Power3VOff;
					Power5VOff;
					// Preventing from further code execution
					for (;;);
				}
			}
		}
	}
}