初级会员

- 积分
- 72
- 金钱
- 72
- 注册时间
- 2017-7-2
- 在线时间
- 12 小时
|
1金钱
求助各位,stm32的HAL库有谁熟悉吗?我用串口中断接收,调用回调函数,能进中断,也能进回调函数,但数据一直是0。有朋友知道是什么问题吗?回调函数如下:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart == &UartHandle)
{
UsartBuffer[UsartWptr++]=UsartRxByte;
UsartWptr = UsartWptr%MAXBUFFER;//保证写位置值不溢出
HAL_UART_Receive_IT(&UartHandle,&UsartRxByte,1);
}
return;
}
HAL_UART_Receive_IT(&UartHandle,&UsartRxByte,1);在主循环之前也执行一次了。
UsartRxByte一直是0.
UART初始化如下:
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
GPIO_InitTypeDef GPIO_InitStruct;
/*##-1- Enable peripherals and GPIO Clocks #################################*/
/* Enable GPIO TX/RX clock */
USARTx_TX_GPIO_CLK_ENABLE();
USARTx_RX_GPIO_CLK_ENABLE();
/* Enable USARTx clock */
USARTx_CLK_ENABLE();
/*##-2- Configure peripheral GPIO ##########################################*/
/* UART TX GPIO pin configuration */
GPIO_InitStruct.Pin = USARTx_TX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = USARTx_TX_AF;
HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);
/* UART RX GPIO pin configuration */
GPIO_InitStruct.Pin = USARTx_RX_PIN;
GPIO_InitStruct.Alternate = USARTx_RX_AF;
HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
/*##-3- Configure the NVIC for UART ########################################*/
/* NVIC for USART */
HAL_NVIC_SetPriority(USARTx_IRQn, 0, 1);
HAL_NVIC_EnableIRQ(USARTx_IRQn);
}
谢谢!
|
最佳答案
查看完整内容[请看2#楼]
不要在串口中断里面用printf!!!
你下载我们例程测试,没毛病吧?
中断服务函数越精简越好。 而且你发数据的时候,占用了时间,自然收不到后面的数据。
|