STM32:使用外部中断控制对射式红外传感器并计次

简介: STM32:使用外部中断控制对射式红外传感器并计次

1.主函数(main.c)代码:


890d5af079d44278ba6d7c3fdc188b3f.png

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "CountSensor.h"
int main(void)
{
    OLED_Init();    
    OLED_ShowString(1,1,"Count:");
    CountSensor_Init();
    while(1)
    {
        OLED_ShowNum(2,1,CountSensor_Get(),4);
    }
}

注:该处警告是C99协议,无视即可

2.CountSensor.c代码部分:


b746df7b2f2b44dca34fd05e44540ada.png


0b2ca225559443f4911e327df73e5ca9.png

f1980671dd41485297adb60db36173c2.png

#include "stm32f10x.h"                  // Device header
uint16_t CountSensor_Count;
void CountSensor_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_14;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStruct);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);
    EXTI_InitTypeDef EXTI_InitStruct;
    EXTI_InitStruct.EXTI_Line=EXTI_Line14;
    EXTI_InitStruct.EXTI_LineCmd=ENABLE;
    EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
    EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStruct);
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    NVIC_InitTypeDef NVIC_InitStruct;
    NVIC_InitStruct.NVIC_IRQChannel=EXTI15_10_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
    NVIC_Init(&NVIC_InitStruct);
}
void EXTI15_10_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line14)==SET)
    {
        if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)
        {
            CountSensor_Count ++;
        }
        EXTI_ClearITPendingBit(EXTI_Line14);
    }
}
uint16_t CountSensor_Get(void)
{
    return CountSensor_Count;
}


3.CountSensor.h代码部分:

e40aef705597434e8cec12ae27a1908a.png


#ifndef  __COUNT_SENSOR_H
#define  __COUNT_SENSOR_H
uint16_t CountSensor_Get(void);
void EXTI15_10_IRQHandler(void);
void CountSensor_Init(void);
#endif


相关文章
|
1月前
|
传感器 开发者
【STM32基础 CubeMX】外部中断
【STM32基础 CubeMX】外部中断
106 44
|
2月前
|
传感器 数据采集 物联网
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计2
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计
94 0
|
2月前
|
传感器 数据采集 物联网
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计1
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计
130 0
|
4月前
|
传感器 安全
嵌入式 STM32 SHT31温湿度传感器
嵌入式 STM32 SHT31温湿度传感器
|
5月前
|
传感器 编解码 JSON
开源项目-基于小熊派STM32红外热成像仪
开源项目-基于小熊派STM32红外热成像仪
111 1
|
6月前
|
传感器 数据采集 SDN
STM32(HAL库)驱动AD8232心率传感器
STM32(HAL库)驱动AD8232心率传感器
|
6月前
|
传感器
STM32(HAL库)驱动GY30光照传感器通过串口进行打印
STM32(HAL库)驱动GY30光照传感器通过串口进行打印
|
6月前
|
传感器
STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印
STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印
|
7月前
|
传感器 编解码 芯片
stm32读取BH1750光照传感器
stm32读取BH1750光照传感器
136 1
|
7月前
|
传感器 芯片 数据格式
stm32读取DHT11温湿度传感器
stm32读取DHT11温湿度传感器
123 1