CH32X035G8U6配置UART1使用PB10為UART1_TX之后,再去配置PB8和PB9為上拉輸入,設(shè)置EXTI中斷,發(fā)現(xiàn)PB8和PB9無法上拉,處于浮空狀態(tài),代碼使用例程EXTI0所修改。GPIO配置代碼如下
void EXTI0_INT_INIT(void)
{
? ? EXTI_InitTypeDef EXTI_InitStructure = {0};
? ? NVIC_InitTypeDef NVIC_InitStructure = {0};
? ? USART_InitTypeDef USART_InitStructure = {0};
? ? GPIO_InitTypeDef GPIO_InitStructure = {0};
? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
? ? GPIO_Init(GPIOB, &GPIO_InitStructure);
? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
? ? GPIO_Init(GPIOB, &GPIO_InitStructure);
? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 , ENABLE);
? ? 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_Tx;
? ? USART_Init(USART1, &USART_InitStructure);
? ? USART_Cmd(USART1, ENABLE);
? ? /* GPIOB ----> EXTI_Line8 */
? ? GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
? ? EXTI_InitStructure.EXTI_Line = EXTI_Line8;
? ? EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
? ? EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
? ? EXTI_InitStructure.EXTI_LineCmd = ENABLE;
? ? EXTI_Init(&EXTI_InitStructure);
? ? /* GPIOB ----> EXTI_Line9 */
? ? GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
? ? EXTI_InitStructure.EXTI_Line = EXTI_Line9;
? ? EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
? ? EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
? ? EXTI_InitStructure.EXTI_LineCmd = ENABLE;
? ? EXTI_Init(&EXTI_InitStructure);
? ? NVIC_InitStructure.NVIC_IRQChannel = EXTI15_8_IRQn;
? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
? ? NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
? ? NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
? ? NVIC_Init(&NVIC_InitStructure);
}