(STM32基础)对射式红外传感器计次&旋转编码器计次

一、对射式红外传感器计次

1)配置对射式红外传感器初始化函数

1、外部中断配置:

第一步:因为对射式红外传感器模块DO数据传感器模块会给引脚发送高低电平信号来触发中断计次,所以需要配置该引脚外部中断初始化。

第二步:按照图示初始化所涉及到的外设:

①先开启所涉及的外设RCC时钟 

②配置GPIO口为输入模式

③配置AFIO选择所需要用到的Pin口连接到EXTI

④配置EXTI选择边沿出发方式,以及触发响应方式

⑤配置NVIC,给中断选择合适的优先级

代码实现:

① RCC开启所需外设的时钟,在这里只需要开启GPIO、AFIO的外设时钟,EXIT和NVIC时钟是默认开启的,NVIC是内核外设不受RCC控制。

代码:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

② GPIO_Init 初始化配置

代码:    

    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;

③ 配置AFIO初始化,ST公司没有专门给AFIO封装专用函数库,在GPIO内附带配置了专用函数。

 GPIO_PinLockConfig  参数指定某个引脚, 那这个引脚配置会被锁定,防止误更改。

GPIO_EventOutputConfig
GPIO_EventOutputCmd    这两个函数用来配置AFIO的事件输出功能的

GPIO_PinRemapConfig   用于引脚重映射,第一个参数选择重映射的方式,第二个参数是新的状态
GPIO_EXTILineConfig    调用这个函数配置AFIO数据选择器,选择先要的中断引脚,虽然开头是GPIO,但是实际操作的是AFIO寄存器。

GPIO_ETH_MediaInterfaceConfig  以太网有关函数

代码:

 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);
 

④ 配置EXTI初始化

 EXTI_DeInit   清除EXTI的所有配置 恢复上电的初始状态
 EXTI_Init  结构体初始化EXTI函数
 EXTI_StructInit   调用这个函数可以把参数传递的结构体变量赋一个默认值
 EXTI_GenerateSWInterrupt  软件触发外部中断  调用一次 触发一次  如果只需要外部引脚触发中断则不需要次函数


FlagStatus EXTI_GetFlagStatus  获取指定标志位是否被置一
 EXTI_ClearFlag 对置一的标志位进行清除
ITStatus EXTI_GetITStatus  获取中断标志位是否被置一
 EXTI_ClearITPendingBit  清除中断挂起标志位

 这四个函数用语读取状态寄存器内的标志位,

在主函数里面对标志位操作使用前两个函数,前两个函数是一般的读写标志位,没有额外的处理,能不能触发中断标志位,都能读取。

在中断函数里面查看标志位使用下面两个函数,下面两个函数只能操作与中断有关的标志位,并且对中断是否允许做出了判断。

⑤ NVIC初始化设置

NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);  中断分组
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct); 根据结构体指定的参数初始化NVIC
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);  设置中断向量表 
void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);  系统低功耗配置
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource);

 pre-emption priority and subpriority先占优先级(抢占优先级)和从占优先级(响应优先级)

二、旋转编码器计次

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值