1:硬件
一:硬件准备
STM32F103ZET6开发板
光敏传感器
OLED显示器(4脚)
二:连接方式
光敏传感器---->STM32:VCC->VCC3.3
GND->GND
D0->PF7
OLED---->STM32:VCC->VCC3.3
GND->GND
SCL->PF0
SDA->PF2
2:代码
一:原理
通过光敏传感器来激发EXTI中断来计数
二:代码
EXTI外设
#include "stm32f10x.h" // Device header
#include "Delay.h"
uint16_t CountSensor_Count;
//³õʼ»¯º¯Êý
void CountSensor_Init(){
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);//»½ÐÑGPIOFµÄʱÖÓ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//»½ÐÑAFIOµÄʱÖÓ
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOF, &GPIO_InitStructure);//GPIOFµÄ³õʼ»¯
GPIO_EXTILineConfig(GPIO_PortSourceGPIOF, GPIO_PinSource7);//½«GPIOF03×÷ΪAFIOÊäÈë¶ÔÓ¦EXTI3Öжϵç·
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.EXTI_Line=EXTI_Line7;
EXTI_InitStruct.EXTI_LineCmd=ENABLE;
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStruct);//EXTIµÄ³õʼ»¯
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//Ñ¡ÔñÏìÓ¦¼¶·Ö×é
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel=EXTI9_5_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);//NVICµÄ³õʼ»¯
}
uint16_t CountSensor_Get(void){
return CountSensor_Count;
}
//ÖжϺ¯Êý£¬²»ÐèÒªÉùÃ÷£¬×Ô¶¯Ö´ÐС£
void EXTI9_5_IRQHandler(void){
EXTI_GetITStatus(EXTI_Line7);//¼ì²éÊDz»ÊÇ12¿ÚÊäÈëµÄÖжÏ
//Èç¹ûÊÇSERÖ´ÐÐÖжÏ
if(EXTI_GetITStatus(EXTI_Line7)==SET){
Count