PA0为红外接收模块信号口
能实现最基本的红外命令控制
仅供参考
主函数- uint8_t IrValue[4]; //设置一个4元素数组变量
-
- void delay_us(uint16_t time) //粗略微秒延时函数
- {
- uint16_t i=0;
- while(time--)
- {
- i=10;
- while(i--) ;
- }
- }
- int main(void) //主函数
- {
-
- EXTI_Config();
- GPIO_Config();
-
- while(1)
- {
- if(IrValue[2] == 0x46) //红外按键键值
- {
- GPIO_SetBits(GPIOB,GPIO_Pin_0);
- }
- else
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_0);
- }
- }
-
- }
复制代码 中断服务函数- void EXTI0_IRQHandler(void)//中断服务函数
- {
- if(EXTI_GetITStatus(EXTI_Line0) == 1)
- {
- uint16_t i,j;
- uint16_t Time=0;
-
-
- delay_us(5000); //延时5ms
-
- if(DO==1) //确定不是外界干扰,DO为红外模块OUT口连接的引脚PA0
- {
- return;
- }
- while(!DO); //跳过9ms
- while(DO); //跳过4.5ms
-
- for(j=0;j<4;j++)
- {
- for(i=0;i<8;i++)
- {
- while(!DO);
- while(DO)
- {
- delay_us(100);
- Time++;
- if(Time>30)
- {
- return;
- }
- }
- IrValue[j] = IrValue[j] >>1;
- if(Time>=10)
- {
- IrValue[j] |= 0x80;
- }
- Time=0;
- }
- }
- }
- EXTI_ClearITPendingBit(EXTI_Line0);
- }
复制代码 中断配置函数- void EXTI_Config(void) //中断初始化配置函数
- {
- GPIO_InitTypeDef GPIO_InitStruct;//GPIO结构体变量
- EXTI_InitTypeDef EXTI_InitStruct;//EXTI结构体变量
- NVIC_InitTypeDef NVIC_InitStruct;//NVIC结构体变量
-
- //NVIC初始化配置
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
- NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStruct);
-
- //GPIO初始化配置
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
- GPIO_Init(GPIOA,&GPIO_InitStruct);
-
- //EXTI初始化配置
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
- GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
- EXTI_InitStruct.EXTI_Line = EXTI_Line0;
- EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
- EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
- EXTI_InitStruct.EXTI_LineCmd = ENABLE;
- EXTI_Init(&EXTI_InitStruct);
- }
复制代码
全部资料51hei下载地址:
IR.7z
(175.27 KB, 下载次数: 32)
|