CH32V208无法进入串口中断

串口配置完成可以发送但是无法接收

void USART1_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure={0};
    USART_InitTypeDef USART_InitStructure={0};
    NVIC_InitTypeDef  NVIC_InitStructure={0};

    /* 打开GPIO和USART部件的时钟 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    /* 配置GPIO的模式和IO口 */
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;            // 串口输出PA9(TX)
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;    // IO口频率
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;      // 复用推挽输出
    GPIO_Init(GPIOA,&GPIO_InitStructure);              // 初始化
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;           // 串口输入PA10(RX)
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;// 浮空输入
    GPIO_Init(GPIOA,&GPIO_InitStructure);              // 初始化

    /* 配置串口硬件参数 */
    USART_InitStructure.USART_BaudRate = 115200;    /* 波特率 */
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No ;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    USART_Init(USART1, &USART_InitStructure);

    /* 使能串口1中断 */
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);    /* 使能串口空闲中断 */
    USART_Cmd(USART1, ENABLE);        /* 使能串口 */
}



void USART1_IRQHandler(void)
{
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
    {
		uint8_t RxData = USART_ReceiveData (USART1);
		 USART_ClearITPendingBit(USART1,USART_IT_RXNE);
	}
}


您好,中断函数注意要加中断声明,参考下图

image.png


void USART1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

char Serial_RxPacket[100];

void USART1_Init(void)

加了 还是不进中断



通了,线断了

代码没问题



只有登录才能回复,可以选择微信账号登录