
include "stm32f4xx.h" // Device headerint16_t Encoder_Count; void Encoder_Init(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOB,&GPIO_InitStructure); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource1); //连接 EXTI 中断源 到 PB1 引脚 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB,EXTI_PinSource2); //连接 EXTI 中断源 到 PB2 引脚 EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line1 | EXTI_Line2; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_Init(&EXTI_InitStructure); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_Init(&NVIC_InitStructure); } int16_t Encoder_Get(void) { int16_t Temp; Temp = Encoder_Count; Encoder_Count = 0; return Temp; } void EXTI1_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line1) == SET) { if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0) { if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) == 0) { Encoder_Count --; } } EXTI_ClearITPendingBit(EXTI_Line1); } } void EXTI2_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line2) == SET) { if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) == 0) { if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0) { Encoder_Count ++; } } EXTI_ClearITPendingBit(EXTI_Line2); } } |
智能穿戴设备赛道作品能否运用电脑去处理信号
求助,使用51单片机和VL6180X传感器测距,结果一直是0是什么原因,能读到ID为0xB4
串口DMA + 空闲中断收发 ?
WS2812B怎么显示任意字符 / 图案?
STM32H743VGT6无法串口烧录 请教原因 请进来看下
STM32L433 单片机在串口配置为IRDA模式后,IRDA是否可以在STOP Mode1下唤醒
两个TIM调用HAL_TIM_PeriodElapsedCallback发生冲突
账号问题
为何Tim2自动装载定时的首次中断时间总是设定时间的2倍?
STM32H5的I3C模块,target rx和tx时,硬件都存在bug
B1 B2 引脚的线都插着,旋转编码器正转反转都是减少,
只拔掉插在B2引脚的线,旋转编码器正转反转都是减少,
只拔插在掉B1引脚的线,没有反应。