Stm32 hal_uart_传输_它不工作(不发生中断)
我正在尝试做uart通信。但是,HAL_UART_TXCPLTCALLLBACK函数不起作用 此外,未执行USART1_IRQHandler。我认为有一个设置可以启用uart和中断,但是 我不知道。源代码如下。如果你有更多的信息,请告诉我。谢谢Stm32 hal_uart_传输_它不工作(不发生中断),stm32,uart,Stm32,Uart,我正在尝试做uart通信。但是,HAL_UART_TXCPLTCALLLBACK函数不起作用 此外,未执行USART1_IRQHandler。我认为有一个设置可以启用uart和中断,但是 我不知道。源代码如下。如果你有更多的信息,请告诉我。谢谢 /// main source HW_UART_Init( ); uint8_t init_ment[60] = "\n\rWelcome to RF Test program\n\r"
/// main source
HW_UART_Init( );
uint8_t init_ment[60] = "\n\rWelcome to RF Test program\n\r";
strcpy(uart1_txbuffer,init_ment);
HAL_UART_Transmit_IT(&huart1, uart1_txbuffer, 30);
HAL_Delay(50);
InitQueue(&queue);
HAL_UART_Receive_IT(&huart1, uart1_rxbuffer, 1);
HAL_Delay(1);
void HW_UART_Init( void )
{
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
huart1.Init.BaudRate = 19200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USART1_Init 2 */
}
如果您在没有cube mx的情况下进行自己的配置,首先应该检查是否向项目中添加了方便的uart文件。STM32多维数据集在“xxxx_it.c”文件中定义了IRQ处理程序,因此您可能没有它。另一方面,Cube MX也完成了必要的NVIC配置
我建议您使用Cube MX,然后您可以找到这里的错误。在您的代码片段中似乎没有任何错误。如果您正在使用cubeMX初始化MCU,在USART部分“NVIC设置”中有一个选项卡,您可以在那里启用USART1全局中断。
它将这两行代码添加到
stm32f4xx_hal_msp.c
文件中
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
我建议您使用cubeMX。遗憾的是,我的水晶球还在清理中,但我假设您的设备有一个单独的“嵌套向量中断控制器”(NVIC),您需要(至少)启用中断:
HAL\u NVIC\u EnableIRQ(USART1\u IRQn)代码>