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); } } }
/* Handle printf functionality */ int fputc(int ch, FILE* fil) { /* Send character over USART */ TM_USART_Putc(USART2, ch); /* Return character */ return ch; }
/** * 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; } }
/* For printf function */ int fputc(int ch, FILE *f) { /* Send over usart */ TM_USART_Putc(USART6, ch); /* Return character back */ 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 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)); } } }
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; }
void SendChar(char message) { #ifdef ENABLE_USART TM_USART_Putc(USART1, message); #endif #ifdef ENABLE_VCP TM_USB_VCP_Putc(message); #endif }
/* 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; }
/* 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; }
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; } }
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); } } }
void DGB_Menu_Output(uint8_t c) { TM_USART_Putc(MENU_USART,c); }
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++); } }