目录
一、中断系统的结构框图及硬件介绍
1.1 外部中断结构
GPIO:(A-G)有多个分组,每组有16个引脚
AFIO:只有一组线到EXTI,AFIO在中间充当数据选择器
EXTI:用来检测其配置的引脚电平变化,并将信息发送到NVIC
NVIC:配置中断优先级,根据优先级顺序传至CPU进行处理
1.2 硬件介绍
二、对射式红外传感器计次
2.1 硬件连接图
2.2 代码
-
CountSensor.c
//第一步:配置RCC时钟,把涉及外设的时钟都打开
//第二步:配置GPIO,设置为输入模式
//第三步:配置AFIO,选择某个GPIO口连接到EXTI(边缘检测及控制器)
//第四步:配置EXTI(不需要开启时钟,原因不详),选择边沿触发方式和触发响应方式
//边沿触发方式:上升沿、下降沿、或者双边沿,触发响应方式:中断响应和事件响应
//第五步:配置NVIC(内核的外设,不需要开启时钟),给中断选择一个合适的优先级
#include "stm32f10x.h" // Device header
uint16_t CountSensor_Count;
void CountSensor_Init(void)
{
//开启外设时钟,EXTI和NVIC自动开启,无需设置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//配置GPIO
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//配置AFIO的数据选择器,选择想要的中断引脚
GPIO_EXTILineConfig