我的板子使用STM32F072C8, USB电路如图,因为USB只用来充电,所以我想直接用PB1来检测USB是否连接电脑或者充电器,配置好IO口中断线等,可是程序无法中断,读取PB1的状态位也正常,在USB连接时为1,USB无连接时为0。配置代码如下: void USB_CHECK_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* enable the GPIO Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); /* Configure GPIO */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_Init(GPIOB, &GPIO_InitStructure); /* enable SYSCFG Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); /* Connect EXTI Line to GPIO Pin */ SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource1); /* Configure EXTI Line */ EXTI_InitStructure.EXTI_Line = EXTI_Line1; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); /* Enable and set EXTI Interrupt to the lowest priority */ NVIC_InitStructure.NVIC_IRQChannel = EXTI0_1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x01; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void EXTI0_1_IRQHandler(void) { //清除中断标志位等其它操作...... if (EXTI_GetITStatus(EXTI_Line1)!=RESET) { //Deal EXTI_ClearITPendingBit(EXTI_Line1); } } |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
看了看
1it里面消抖检查下
2触发模式试试上升下降沿都触发 EXTI_Trigger_Rising
3没有别的1脚在用中断线吧
评分
查看全部评分
我想问,你是通过USB供电的吗?
如果是的话,PB1上升沿来的时候,MCU还没有启动呢,自然不会在中断。
或许原理这是这样的,但是仅凭目前的描述,不知道是怎么连的
评分
查看全部评分
中断输入点满足不了TTL电平变化的中断要求
评分
查看全部评分
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
例程:
GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;
评分
查看全部评分
现在整个系统只运行了这个usb中断的测试程序
现在整个系统只运行了这个usb中断的测试程序
有电池供电,是在设备已经正常运行,OLED已经正常显示后,再插入USB的,
这种情况要怎么解决呢?改变分压电阻?
建议使用下降沿中断,去除R17,
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_Up;
或者使用上升沿中断,去掉R16
找到问题了,同样的中断配置代码,如果没用IAP,直接从0x08000000运行程序,可以进入中断,如果烧了IAP,从配置的地址0x08003000运行程序就进不了中断,APP中我也做了向量中断表重映射,EXTI4_15_IRQHandler这个中断就可以正常进入运行,而EXTI0_1_IRQHandler这个中断就进不去。现在不知道什么回事,迷茫中。
评分
查看全部评分
评分
查看全部评分