Hi to all I am new in STM32 and keil (I used Atmel chips) and now I am getting familier with them. I made a project and I can send data to serial port with the following function : "HAL_UART_Transmit(&huart1,(uint8_t *) "Hello\n\r", 7, 10);" but I do not know why there is no data when I use the following function based on sprintf: "sprintf((char *) buffer,"23");"
The thing is that the code is well compiled and there is no error but the function does not work. Do I need to add some more code for sprintf function ??!!!
Help please
What do you mean by, "there is no data" ?
Show a complete example of your usage.
Say what you expected to happen.
Say what actually happened.
Say what you have done to investigate the problem ...
Compiler errors tell you about errors in syntax, not errors of logic or judgement.
sprintf() should fill the buffer, but that's going to depend on how you define the buffer, which you fail to show, and then whether you output it anywhere, which again you don't show.
You need to learn how to clearly explain and present problems, be attentive to detail.
Hi thanks for your help and I do apologize for not clarifying the problem. I added my code but I do not know why it did not show there. I guess I did something wrong. here is my simple code.
it is a simple code. it waits until a push button pressed, then it turns on a LED and sends 3 data to PC console with 3 different fucntion. 1- MCU transmit fucntion. 2- filling a string with sprintf function and sending with MCU transmit function. 3- with printf function.
I use this code to check how different functions work in STM32F0 and keil especially stdio library. it works but instead of having value 23 with printf function, I have two Small square on screen. I could not add the picture of my console but I guess you got what I mean.
/* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f0xx_hal.h" #include "stdio.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ UART_HandleTypeDef huart1; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ char buffer[20]; char a[1] = "A"; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ struct __FILE {int hndle;}; FILE __stdout; FILE __stdin; FILE __stderr; int fputc(int ch, FILE *f) { while (!HAL_UART_GetState(&huart1)); HAL_UART_Transmit(&huart1,(uint8_t *) ch, 20,100); return ch; } /* USER CODE END 0 */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ HAL_UART_Transmit(&huart1,(uint8_t *) "Hello", 5, 10); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ if (HAL_GPIO_ReadPin (GPIOA,GPIO_PIN_0) == 1){ HAL_GPIO_WritePin(GPIOC,LD3_Pin,GPIO_PIN_SET); HAL_UART_Transmit(&huart1,(uint8_t *) "Hello\n\r", 7, 10); sprintf(buffer,"hello world"); HAL_UART_Transmit(&huart1,(uint8_t *) buffer, 20, 10); printf("23"); HAL_Delay(300); } else if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 0){ HAL_GPIO_WritePin(GPIOC,LD3_Pin,GPIO_PIN_RESET); } } /* USER CODE END 3 */ }