使用普中基础实验31获取遥控地址
.c文件如下
#include "hwjs.h"
#include "SysTick.h"
void Hwjs_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* ¿ªÆôGPIOʱÖÓ¼°¹Ü½Å¸´ÓÃʱÖÓ */
RCC_APB2PeriphClockCmd(IRED_PORT_RCC|RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Pin=IRED_PIN;//ºìÍâ½ÓÊÕ
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(IRED_PORT,&GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource8); //Ñ¡ÔñGPIO¹Ü½ÅÓÃ×÷ÍⲿÖжÏÏß·
EXTI_ClearITPendingBit(EXTI_Line8);
/* ÉèÖÃÍⲿÖжϵÄģʽ */
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);
/* ÉèÖÃNVIC²ÎÊý */
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //´ò¿ªÈ«¾ÖÖжÏ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //ÇÀÕ¼ÓÅÏȼ¶Îª0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //ÏìÓ¦ÓÅÏȼ¶Îª1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //ʹÄÜ
NVIC_Init(&NVIC_InitStructure);
}
u8 HW_jssj()
{u8 t=0;
while(GPIO_ReadInputDataBit(IRED_PORT,IRED_PIN)==1)//???
{
t++;
delay_us(20);
if(t>=250) return t;//????
}
return t;
}
u32 hw_jsm=0;
u8 hw_jsbz;
void EXTI9_5_IRQHandler(void)
{u8 Tim=0,Ok=0,Data,Num=0;
while(1)
{
if(GPIO_ReadInputDataBit(IRED_PORT,IRED_PIN)==1)
{Tim=HW_jssj();
if(Tim>=250)break;
if(Tim>=200 && Tim<250)
{
Ok=1;//??????
}
else if(Tim>=60 && Tim<90)Data=1;
else if(Tim>=10 && Tim<50)Data=0;
if(Ok==1)
{
hw_jsm<<=1;
hw_jsm+=Data;
if(Num>=32)
{
hw_jsbz=1;
break;
}
}
Num++;
}
}
EXTI_ClearITPendingBit(EXTI_Line8);
}
得到
EQ 0XE0
vol- 0XA8
vol+ 0X90