
void usart_test(void)
{
static uint8_t flag = 0;
char text01[20];
sprintf(text01,"Lan Qiao Bei\r\n");
HAL_UART_Transmit(&huart1,(uint8_t*)text01,sizeof(text01),HAL_MAX_DELAY);
HAL_UART_Transmit(&huart2,(uint8_t*)text01,sizeof(text01),HAL_MAX_DELAY);
flag++;
sprintf(text,"%d",flag);
LCD_DisplayStringLine(Line5,(unsigned char*)text);
HAL_Delay(1000);
}
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_TIM2_Init();
MX_TIM3_Init();
MX_TIM4_Init();
MX_ADC1_Init();
MX_ADC2_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
/ USER CODE BEGIN 2 */
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
LCD_Init();
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
LCD_Clear(Black);
LCD_DisplayStringLine(Line0,(unsigned char*)"helloworld");
HAL_TIM_Base_Start_IT(&htim4);
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
// HAL_TIM_IC_Start(&htim3,TIM_CHANNEL_1);
HAL_ADC_Start(&hadc1);
HAL_ADC_Start(&hadc2);
/* USER CODE END 2 */
/* Infinite loop /
/ USER CODE BEGIN WHILE */
while (1)
{
usart_test();
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
这是什么问题啊,为什么串口发送不了数据
可能原因:1)sizeof(text01)会把未使用的数组空间也发送,建议改为strlen(text01)或strlen("Lan Qiao Bei\r\n");2)HAL_UART_Transmit是阻塞函数,在while循环中同步调用会导致总线占用,尝试用非阻塞方式或降低调用频率;3)确认USART1和USART2的GPIO初始化、引脚配置正确,且波特率与接收端匹配。