完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void Encoder_Init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, GPIO_InitStructure); EXti_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource15); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3); EXTI_InitStructure.EXTI_Line =EXTI_Line4 | EXTI_Line15; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_Init( EXTI_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_Init( NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_Init( NVIC_InitStructure);}void EXTI15_10_IRQHandler(void){ if (EXTI_GetITStatus(EXTI_Line15) == SET) { /*如果出现数据乱跳的现象,可再次判断引脚电平,以避免抖动*/ if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_15) == 0) { if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3) == 0) { Encoder_Count --; } } EXTI_ClearITPendingBit(EXTI_Line15); }}void EXTI3_IRQHandler(void){ if (EXTI_GetITStatus(EXTI_Line3) == SET) { /*如果出现数据乱跳的现象,可再次判断引脚电平,以避免抖动*/ if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3) == 0) { if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15) == 0) { Encoder_Count ++; } } EXTI_ClearITPendingBit(EXTI_Line3); }}
|
|
相关推荐
1个回答
|
|
PB4是可以设置成外部中断的,PB3设置不了中断,也没有办法作为一般io使用
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用NUCLEO-H743ZI2时,DCMI-DMA传输停止是为什么
212 浏览 0 评论
FreeRTOS(V9.0)中创建信号量的函数都没有被定义,因此用不了,怎么解决
508 浏览 0 评论
请问各位大神 将220v交流电降压变为24v后整流滤波稳压怎么才可以得到0-30v的可调电压呢?
553 浏览 0 评论
1458 浏览 0 评论
国产NSI1300D05-DSWVR放大芯片放大增益8.2或41的问题
1639 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-15 07:43 , Processed in 0.693601 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191