高级会员

- 积分
- 917
- 金钱
- 917
- 注册时间
- 2018-7-18
- 在线时间
- 384 小时
|

楼主 |
发表于 2021-6-25 11:33:40
|
显示全部楼层
static void MX_USART1_UART_Init(void)
{
/* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END USART1_Init 0 */
/* USER CODE BEGIN USART1_Init 1 */
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
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;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USART1_Init 2 */
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); //使能空闲中断
HAL_UART_Receive_DMA(&huart1,usart1_rcv_fifo.fifo[usart1_rcv_fifo.head].buf,BLE_RBUF_LENGTH);
// __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_IDLE);
/* USER CODE END USART1_Init 2 */
}
static void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA2_CLK_ENABLE();
/* DMA interrupt init */
/* DMA2_Stream2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn);
}
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
uint16_t len;
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
if( (__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE) != RESET))
{
huart1.RxState = HAL_UART_STATE_READY;
__HAL_UART_FLUSH_DRREGISTER(&huart1);
// __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_IDLE);
// huart1.Instance->SR;
// huart1.Instance->DR;
len = __HAL_DMA_GET_COUNTER(&hdma_usart1_rx); //读取DMA剩余传输数量
// huart1.RxXferCount = 0;
HAL_UART_DMAStop(&huart1);
usart1_rcv_fifo.fifo[usart1_rcv_fifo.head].length = BLE_RBUF_LENGTH - len;// huart1.RxXferCount;
usart1_rcv_fifo_in(&usart1_rcv_fifo);//数据放入缓存区
}
/* USER CODE END USART1_IRQn 1 */
} |
|