洛千叶 发表于 2017-6-16 14:41:41

CubeMx配置的工程不能进入串口中断,帮忙看下,谢谢!

使用最新的CubeMx配置的串口工程不能进入中断,使能了串口中断,DR寄存器的值一直在变化就是不进中断,SR寄存器的值一直不变化,求解决办法
__HAL_UART_ENABLE_IT(&huart2, UART_IT_ERR);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);

yukaigogogo 发表于 2017-6-16 14:57:56

MX 里面的串口配置发一下

洛千叶 发表于 2017-6-16 16:08:55

yukaigogogo 发表于 2017-6-16 14:57
MX 里面的串口配置发一下

没有多少要配置的

洛千叶 发表于 2017-6-16 16:17:06

解决了,方法如下
1.初始化的时候添加一个中断接收
/* USER CODE BEGIN USART2_MspInit 0 */

/* USER CODE END USART2_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_USART2_CLK_ENABLE();

    /**USART2 GPIO Configuration   
    PA2   ------> USART2_TX
    PA3   ------> USART2_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    /* USART2 interrupt Init */
    HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);
    HAL_NVIC_EnableIRQ(USART2_IRQn);
/* USER CODE BEGIN USART2_MspInit 1 */
HAL_UART_Receive_IT(&huart2,(uint8_t *)&s_ucTemp,1);
2.main函数初始化串口后添加如下函数
__HAL_UART_ENABLE_IT(&huart2, UART_IT_PE);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_ERR);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
3.接收中断中
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
__HAL_UART_ENABLE_IT(&huart2, UART_IT_PE);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_ERR);
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
通过以上步骤串口成功进入中断

yukaigogogo 发表于 2017-7-7 15:00:56

你不启动接收,谁会帮你收啊。
页: [1]
查看完整版本: CubeMx配置的工程不能进入串口中断,帮忙看下,谢谢!