Beispiel #1
0
int main(void) {
	/* Init system */
	TM_RCC_InitSystem();
	
	/* Init HAL layer */
	HAL_Init();
	
	/* Init leds */
	TM_DISCO_LedInit();
	
	/* Init delay */
	TM_DELAY_Init();
	
	/* Init USB peripheral */
	TM_USB_Init();
	
	/* Init VCP on HS port */
	TM_USBD_CDC_Init(TM_USB_HS);
	
	/* Start USB device mode on HS port */
	TM_USBD_Start(TM_USB_HS);
	
	while (1) {
		/* Process USB CDC device, send remaining data if needed */
		/* It is better if you call this in periodic timer, like each ms in SYSTICK handler */
		TM_USBD_CDC_Process(TM_USB_HS);
		
		/* Check if device is ready, if drivers are installed if needed on HS port */
		if (TM_USBD_IsDeviceReady(TM_USB_HS) == TM_USBD_Result_Ok) {
			/* Turn on green LED */
			TM_DISCO_LedOn(LED_GREEN);
			
			/* Check if user has changed parameters for COM port */
			TM_USBD_CDC_GetSettings(TM_USB_HS, &USB_Settings);
		
			/* Check if settings updated from user terminal */
			if (USB_Settings.Updated) {
				/* Reinit USART, only baudrate works in this example */
				TM_USART_Init(USART6, TM_USART_PinsPack_1, USB_Settings.Baudrate);
			}
		
			/* Check if anything received on HS port from user */
			while (TM_USBD_CDC_Getc(TM_USB_HS, &ch)) {
				/* One character received */
				
				/* Send character to USART */
				TM_USART_Putc(USART6, ch);
			}
			
			/* CHeck if any character received from USART */
			while (!TM_USART_BufferEmpty(USART6)) {
				/* Send data over USB CDC */
				TM_USBD_CDC_Putc(TM_USB_HS, TM_USART_Getc(USART6));
			}	
		} else {
			/* Turn off green LED */
			TM_DISCO_LedOff(LED_GREEN);
		}
	}
}
Beispiel #2
0
/* Handle printf functionality */
int fputc(int ch, FILE* fil) {
	/* Send character over USART */
	TM_USART_Putc(USART2, ch);
	
	/* Return character */
	return ch;
}
Beispiel #3
0
/**
  * Receive Handler for USART1
  * Name: TM_USART1_ReceiveHandler
  *
  * Description: Gives functionality when a character is received over the USART serial communication channel
  *              Stores data received into a buffer for use in other functions 
  *              Control available for use of the backspace key, functions called when enter key pressed (carriage return)
  *              Used to set the RTC time
  *
  * Arguments: uint8_t c - character received
  *
  * Returns: void  
  */  
void TM_USART1_ReceiveHandler(uint8_t c){
  char str[256];
  TM_USART_Putc(USART1, c);
  buffer[i] = c;
  i++;
  /* Backspace */
  if (c == 0x7F){
    i--;
    buffer[i] = 0;
    i--;
    buffer[i] = 0;
  }
  /* Carriage Return */
  if (c == 13){
    if (buffer[0] == 'R' && buffer[1] == 'T' && buffer[2] == 'C'){
    if (isdigit(buffer[4]) && isdigit(buffer[5]) && !isdigit(buffer[6]) && isdigit(buffer[22])){
      strncpy(RTC_time, (char *) buffer + 4, sizeof(buffer) - 4);
	  /* Set RTC time */
      TM_RTC_SetDateTimeString(RTC_time);
    }
  }
  sprintf(str, "\n\rRTC %s\n\r", RTC_time);
  /* Put to USART */
  TM_USART_Puts(USART1, str);
  memset(buffer, 0, sizeof(buffer));
  i = 0;
  }
}
Beispiel #4
0
/* For printf function */
int fputc(int ch, FILE *f) {
    /* Send over usart */
    TM_USART_Putc(USART6, ch);

    /* Return character back */
    return ch;
}
Beispiel #5
0
int main(void) {
	/* Init system clock for maximum system speed */
	TM_RCC_InitSystem();
	
	/* Init HAL layer */
	HAL_Init();
	
	/* Init leds */
	TM_DISCO_LedInit();
	
	/* Init button */
	TM_DISCO_ButtonInit();
	
	/* Init USART, Pins not initialized yet, 921600 bauds */
	TM_USART_Init(USART6, TM_USART_PinsPack_Custom, 921600);
	
	/* Put test string */
	TM_USART_Puts(USART6, "Hello world\n");
	
	while (1) {
		/* Check if anything received */
		while (!TM_USART_BufferEmpty(USART6)) {
			/* Send data back from buffer */
			TM_USART_Putc(USART6, TM_USART_Getc(USART6));
		}
	}
}
Beispiel #6
0
int fputc(int ch, FILE* f) {
    /* Sent data over USART */
    TM_USART_Putc(USART1, ch);

    /* Return the same character back */
    return ch;
}
/* printf handler */
int fputc(int ch, FILE* fil) {
	/* Send over debug USART */
	TM_USART_Putc(USART2, ch);
	
	/* Return OK */
	return ch;
}
int main(void) {
	/* Init system clock for maximum system speed */
	TM_RCC_InitSystem();
	
	/* Init HAL layer */
	HAL_Init();
	
	/* Init leds */
	TM_DISCO_LedInit();
	
	/* Init USART, TX: PC6, RX: PC7, 921600 bauds */
	TM_USART_Init(USART2, TM_USART_PinsPack_1, 115200);
	
	/* Put test string */
	TM_USART_Puts(USART2, "Hello world\n");
	
	while (1) {
		/* Check if we have string "OK" in USART6 buffer */
		if (TM_USART_FindString(USART2, "OK")) {
			/* Send data back from buffer */
			while (!TM_USART_BufferEmpty(USART2)) {
				/* Send to computer */
				TM_USART_Putc(USART2, TM_USART_Getc(USART6));
			}
		}
	}
}
/* Called from printf */
int fputc(int ch, FILE* f) {
	/* Send over USART */
	TM_USART_Putc(USART6, ch);
	
	/* Return character */
	return ch;
}
Beispiel #10
0
void SendChar(char message) {
#ifdef ENABLE_USART
	TM_USART_Putc(USART1, message);
#endif
#ifdef ENABLE_VCP
	TM_USB_VCP_Putc(message);
#endif
}
Beispiel #11
0
/* Handle stdout actions = default name and can not be changed */
int TM_STDIO_StdoutHandler(int ch, FILE* f) {
	/* Send data to USART1 */
	TM_USART_Putc(USART1, (char) ch);
	
	/* Return ch, it means OK */
	return ch;
	/* If you want to return error, then you have to send EOF (-1) */
	//return -1;
}
Beispiel #12
0
/* USART6 output stream handler = custom function name, linked with USART6 stream in the beginning of main() function */
int USART6_Stream_OutputFunction(int ch, FILE* f) {
	/* Send char via USART6 */
	TM_USART_Putc(USART6, (char) ch);
	
	/* Return ch, it means OK */
	return ch;
	/* If you want to return error, then you have to send EOF (-1) */
	//return -1;
}
Beispiel #13
0
int8_t	SIM300SendMsg(const char *num, const char *msg,uint8_t *msg_ref)
{
	TM_USART_ClearBuffer(USART1);
	
	char cmd[25];
	
	sprintf(cmd,"AT+CMGS= %s",num);
	
	cmd[8]=0x22; //"
	
	uint8_t n=strlen(cmd);
	
	cmd[n]=0x22; //"
	cmd[n+1]='\0';
	
	//Send Command
	SIM300Cmd(cmd);
	
	Delayms(100);
	
	TM_USART_Puts(USART1,msg);
	
	TM_USART_Putc(USART1,0x1A);
	
	while(   TM_USART_Available(USART1)<(strlen(msg)+5)   );
	
	//Remove Echo
	TM_USART_Gets(USART1,sim300_buffer,strlen(msg)+5);
	
	uint8_t len=SIM300WaitForResponse(6000);
	
	if(len==0)
		return SIM300_TIMEOUT;
	
	sim300_buffer[len-1]='\0';
	
	if(strncasecmp(sim300_buffer+2,"CMGS:",5)==0)
	{
		
		*msg_ref=atoi(sim300_buffer+8);
		
		TM_USART_ClearBuffer(USART1);
		
		return SIM300_OK;
	}
	else
	{
		TM_USART_ClearBuffer(USART1);
		return SIM300_FAIL;	
	}		
}
Beispiel #14
0
int main(void) {
	uint8_t c;
	
	//Initialize system
	SystemInit();

	TM_DELAY_Init();

	//Initialize USART1 at 9600 baud, TX: PA9, RX: PA10
	TM_USART_Init(USART1, TM_USART_PinsPack_1, 9600);
	//Put string to terminal
	TM_USART_Puts(USART1, "Hello world\n\r");

	while (1) {
		//Get character from internal buffer
		c = TM_USART_Getc(USART1);
		if (c) {
			//If anything received, put it back to terminal
			TM_USART_Putc(USART1, c);
		}
	}
}
Beispiel #15
0
void DGB_Menu_Output(uint8_t c) {
  TM_USART_Putc(MENU_USART,c);
}
Beispiel #16
0
void TM_EXTI_Handler(uint16_t GPIO_Pin) {
	/* Handle external line 0 interrupts */
	if (GPIO_Pin == DTMF_BIT4_PIN) {
		
		if(TM_GPIO_GetInputPinValue(DTMF_BIT0_PORT, DTMF_BIT0_PIN)==0){ // Q1  =0
			if(TM_GPIO_GetInputPinValue(DTMF_BIT1_PORT, DTMF_BIT1_PIN)==0){//  Q2 =0
				if(TM_GPIO_GetInputPinValue(DTMF_BIT2_PORT, DTMF_BIT2_PIN)==0){// Q3 =0
					if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)// Q4 =0 Q321=0 
						express = 'D';
					else express = '8';
						}
				else{ // Q1 =0,Q2=0,Q3=1
					if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)
								express = '4';
					else express = '#';
						}
			}
			else //Q1=0,Q2=1,
			{
				if(TM_GPIO_GetInputPinValue(DTMF_BIT2_PORT, DTMF_BIT2_PIN)==0){// Q3 =0
					if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)// Q4 =0  
						express = '2';
					else express = '0';
						}
				else{ // Q1 =0,Q2=1,Q3=1
					if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)
								express = '6';
					else 	express = 'B';
				}
			}
		}
		else{					//Q1=1
				if(TM_GPIO_GetInputPinValue(DTMF_BIT1_PORT, DTMF_BIT1_PIN)==0){//  Q2 =0
					if(TM_GPIO_GetInputPinValue(DTMF_BIT2_PORT, DTMF_BIT2_PIN)==0){// Q3 =0
						if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)// Q4 =0 
						express = '1';
						else express = '9';
						}
					else{ // Q1 =1,Q2=0,Q3=1
				if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)
								express = '5';
					else express = 'A';
					}
				}
				else //Q1=1,Q2=1,
				{
				if(TM_GPIO_GetInputPinValue(DTMF_BIT2_PORT, DTMF_BIT2_PIN)==0){// Q3 =0
					if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)// Q4 =0  
						express = '3';
					else express = '.';
						}
				else{ // Q1 =1,Q2=1,Q3=1
					if(TM_GPIO_GetInputPinValue(DTMF_BIT3_PORT, DTMF_BIT3_PIN)==0)
						express = '7';
					else express = 'C';
				}
			}
		}
		
		TM_USART_Putc(USART3,express);
		/* Toggle RED led */
//		TM_DISCO_LedToggle(LED_RED);
//		/* Check counter */
		if (++counter >= 10) {
			/* Detach external interrupt for GPIO_Pin_0 no matter on which GPIOx is connected */
			TM_EXTI_Detach(GPIO_Pin_0);
		}
	}
	
//	/* Handle external line 13 interrupts */
	
	if (GPIO_Pin == W1_D0_PIN) { /* run W1 D0 - dieu khien RELAY_DK1_PORT , RELAY_DK1_PIN*/	
		if(!flag_W1D1)
		{ 
		flag_W1D0 =1 ;
		flag_W1D1 =0;
		timeout = value_dip;
		timer_dk1 =0;
		}
		
	}
	if (GPIO_Pin == W1_D1_PIN) {	/* run W1 D1 - dieu khien RELAY_DK2_PORT , RELAY_DK2_PIN*/
		if(!flag_W1D0) {
		flag_W1D1 =1 ;
		flag_W1D0 =0 ;
		timeout = value_dip;
		timer_dk2 =0;
		}
		
	}
	if (GPIO_Pin == W2_D1_PIN) { // ngat cac cong 
		/* run w2 D1 */
	timerdk1=(timeout*2);
	timerdk2=(timeout*2);	
}
}
/* printf handler */
int fputc(int ch, FILE* fil) {
    TM_USART_Putc(DEBUG_USART, ch);         /* Send over debug USART */
    return ch;                              /* Return OK */
}
void TM_USART_Puts(USART_TypeDef* USARTx, char* str) {
	while (*str) {
		TM_USART_Putc(USARTx, *str++);
	}
}