نه متاسفانه، اینکار انجام نمیشه
برای اینکار باید retarget یا reroute انجام میدادم
یعنی وقتی که از دستور printf استفاده می کنم باید برنامه بطور اتوماتیک مسیر ارسال دستورات رو به usart2 منتقل کنه.
شبیه چنین کاری ، که درست جواب داده
کد:
#include "main.h"
#include "stm32f1xx_hal.h"
UART_HandleTypeDef huart2;
void SystemClock_Config(void);
void Error_Handler(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART2_UART_Init();
printf("AT\r");
HAL_Delay(4000);
printf("AT+CMGF=1\r");
printf("AT+CMGS=0933333333\r");
printf("hellooo\x1A");
while (1)
{
}
}
PUTCHAR_PROTOTYPE /**RETARGET PRINTF TO UART2***/
{
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}