安庆高速到合肥的大巴:STM32学习笔记---外部中断(EXTI8) (www.ourdev.cn)
来源:百度文库 编辑:偶看新闻 时间:2024/04/27 19:35:45
STM32学习笔记---外部中断(EXTI8) 回复数:6,点击数:311 【楼主位】 weif40423p
积分:45
派别:
等级:------
来自:
在使用EXTI的时候,因为没有开启时钟没有开启RCC_APB2Periph_AFIO时钟,让我调试吃了不少苦头,看来还要好好看看stm32的时钟啊
现在给出我的exti8的配置
首先一定要记得配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 使能AFIO时钟
GPIOB8作为中断脚,配置为浮空输入
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure PB8 as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
继续配置NVIC
/**
* @brief Configures NVIC and Vector Table base location.
* @param None
* @retval : None
*/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* Configure the NVIC Preemption Priority Bits*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
}
然后配置EXTI ,把PB8连接到EXTI
/*******************************************************************************
* Function Name : EXTI_Configuration
* Description :
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
/*connect PB8 to EXTI*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);
/*Config EXTI8*/
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);
//EXTI_GenerateSWInterrupt(EXTI_Line8);
}
这样就可以中断了,
在中断函数里面记得清除标志位
/**
* @brief This function handles EXTI9_5 global interrupt request.
* @param None
* @retval : None
*/
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line8)!= RESET)
{
EXTI_ClearITPendingBit(EXTI_Line8);
}
}
2010-03-16,17:44:17 资料 邮件 回复 引用回复 编辑 删除 【1楼】 FPGARM
积分:89
派别:
等级:------
来自:广州
太巧了,今天晚上我就打算搞介个,谢谢LZ! 2010-03-16,18:15:29 资料 邮件 回复 引用回复 编辑 删除 【2楼】 linfeng286
积分:1086
派别:
等级:------
来自:
mark 一会试试 2010-03-16,18:51:59 资料 邮件 回复 引用回复 编辑 删除 【3楼】 Grant
积分:2116
派别:
等级:------
来自:
STM32也还,STM8也好,都是以时钟为驱动的,记得使用STM32的任何外设都要先操作RCC。
STM8默认外设时钟都是打开的,要省电就要记得关外设时钟。 2010-03-16,20:51:11 资料 邮件 回复 引用回复 编辑 删除 【4楼】 ddljdd
积分:35
派别:
等级:------
来自:
不错,~~~ 2010-03-17,11:30:15 资料 邮件 回复 引用回复 编辑 删除 【5楼】 rube 永丰庵
积分:1561
派别:
等级:------
来自:深圳
我试过了,这个很好用。
谢谢楼主 2010-05-25,15:20:58 资料 邮件 回复 引用回复 编辑 删除
积分:45
派别:
等级:------
来自:
在使用EXTI的时候,因为没有开启时钟没有开启RCC_APB2Periph_AFIO时钟,让我调试吃了不少苦头,看来还要好好看看stm32的时钟啊
现在给出我的exti8的配置
首先一定要记得配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 使能AFIO时钟
GPIOB8作为中断脚,配置为浮空输入
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure PB8 as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
继续配置NVIC
/**
* @brief Configures NVIC and Vector Table base location.
* @param None
* @retval : None
*/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* Configure the NVIC Preemption Priority Bits*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
}
然后配置EXTI ,把PB8连接到EXTI
/*******************************************************************************
* Function Name : EXTI_Configuration
* Description :
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
/*connect PB8 to EXTI*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);
/*Config EXTI8*/
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);
//EXTI_GenerateSWInterrupt(EXTI_Line8);
}
这样就可以中断了,
在中断函数里面记得清除标志位
/**
* @brief This function handles EXTI9_5 global interrupt request.
* @param None
* @retval : None
*/
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line8)!= RESET)
{
EXTI_ClearITPendingBit(EXTI_Line8);
}
}
2010-03-16,17:44:17 资料 邮件 回复 引用回复 编辑 删除 【1楼】 FPGARM
积分:89
派别:
等级:------
来自:广州
太巧了,今天晚上我就打算搞介个,谢谢LZ! 2010-03-16,18:15:29 资料 邮件 回复 引用回复 编辑 删除 【2楼】 linfeng286
积分:1086
派别:
等级:------
来自:
mark 一会试试 2010-03-16,18:51:59 资料 邮件 回复 引用回复 编辑 删除 【3楼】 Grant
积分:2116
派别:
等级:------
来自:
STM32也还,STM8也好,都是以时钟为驱动的,记得使用STM32的任何外设都要先操作RCC。
STM8默认外设时钟都是打开的,要省电就要记得关外设时钟。 2010-03-16,20:51:11 资料 邮件 回复 引用回复 编辑 删除 【4楼】 ddljdd
积分:35
派别:
等级:------
来自:
不错,~~~ 2010-03-17,11:30:15 资料 邮件 回复 引用回复 编辑 删除 【5楼】 rube 永丰庵
积分:1561
派别:
等级:------
来自:深圳
我试过了,这个很好用。
谢谢楼主 2010-05-25,15:20:58 资料 邮件 回复 引用回复 编辑 删除
请教51单片机的外部中断
如何做学习笔记
司法鉴定学习笔记范文
学习型班组学习笔记
查找先进性教育的学习笔记
牛津9A学习笔记
PRO-E的学习笔记
怎么写团章学习笔记?
求一学习笔记软件
哪里有英语学习笔记?
PRO-E的学习笔记
高中怎样做学习笔记
求中级物流师的学习笔记
有机化学学习笔记 这本书有吗?
chat.ext是什么进程??
mstsc.ext是什么程序
QQ掉线,QC的学习是不是中断了
有学习好笔记写得好的重点高中学生我要买高二高三的英语课堂笔记
白兰地中EXT-RA代表
党员开展先进性教育的学习笔记及心得的网址
Internet IntraWeb开发学习笔记(三)b.htm
哪里有PowerPoint格式的学习笔记下载?
用于学习笔记/反思日记的管理有那些?
关于学习实践"三个代表"重要思想,增强团员意识的学习笔记