红外遥控STM32程序_第1页
红外遥控STM32程序_第2页
红外遥控STM32程序_第3页
红外遥控STM32程序_第4页
红外遥控STM32程序_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*stm32F103VET6红外驱动【遥控器解码实验程序】遥控器:42位编码*/*#include""#include""#include""#include""#define#define#defineIR_Hongwai_0IR_Hongwai_1GPIOE->BRR = 0x00000004GPIOE->BSRR = 0x00000004IR_Hongwai_x GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2)/红外数据低电平/红外数据高电平/读取红外电平状态#de

2、fineLED1_0GPIOD->BRR=0x00000100/LED低电平#defineLED2_0GPIOD->BRR=0x00000200#defineLED3_0GPIOD->BRR=0x00000400#defineLED4_0GPIOD->BRR=0x00000800#defineLED1_1GPIOD->BSRR;二0x00000100/LED#defineLED2_1GPIOD->BSRR;二0x00000200#defineLED3_1GPIOD->BSRR;二0x00000400#defineLED4_1GPIOD->BSRR

3、;二0x00000800高电平unsignedcharTimeByte;unsignedintIR_Tireafg4;unsignedintIR_xidwrit8=0,0,0,0,0,0,0,0;/*GPIO端口配置子函数*/voidGPIO_InitStructReadtempCmd(void)GPIO_InitTypeDefGPIO_InitStruct;=GPIO_Pin_2;/配置GPIO管脚=GPIO_Mode_IPU;/配置管脚为输入上拉=GPIO_Speed_50MHz;/配置管脚速率50MHZGPIO_Init(GPIOE,&GPIO_InitStruct);/初始化指

4、定端口=GPIO_Pin_5;=GPIO_Mode_Out_PP;/配置管脚陪推挽式输出=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct);=GPIOPin8|GPIOPin9|GPIOPin10|GPIOPin11;=GPIO_Mode_Out_PP;=GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStruct);/*配置外设时钟子函数* /voidRCC_APB2PeriphReadtempyCmd(void)RCC_APB2PeriphClockCmd(RCC_APB2Periph

5、_GPIOB,ENABLE);/打开GPIOB夕卜设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);/打开GPIOE夕卜设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);/打开GPIO3卜设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/打开AFIO复用功能夕卜设时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);/* 计算低脉宽持续时间Count1*10us*

6、/unsignedintIR_HongwaiRead_LSB_Cmd()unsignedintCount1=0;/定义时间变量IR_Hongwai_0;/红外数据低电平do/进入循环体Count1+;/时间变量加1Delay_10us(1);/延时10uswhile(IR_Hongwai_x=0);判断条件如果读出来的红外数据为高电平跳出循环体return(Count1);/返回时间变量积数/* 计算高脉宽持续时间Count2*10us* /unsignedintIR_HongwaiRead_MSB_Cmd()unsignedintCount2=0;/定义时间变量IR_Hongwai_1;/红

7、外数据高电平do/进入循环体Count2+;/时间变量加1Delay_10us;/延时10uswhile(IR_Hongwai_x=1);判断条件如果读出来的红外数据为低电平跳出循环体return(Count2);/* 函数主体*/intmain(void)SystemInit();/初始化系统时钟进入72M主频SYSTICK_InitStructReadTCmd();/初始化SysTick配置器寄存器RCC_APB2PeriphReadtempyCmd();/初始化外设时钟配置寄存器GPIO_InitStructReadtempCmd();/初始化GPIO端口配置寄存器EXTI_InitSt

8、ructReadtempCmd();/初始化EXTI外部线路寄存器NVIC_InitStructReadtempCmd();/初始化NVIC中断配置寄存器while(1)/* EXTI外部中断线服务程序*/voidEXTI2_IRQHandler(void)unsignedchari=0;unsignedcharflag=1;/低电平引导码9ms判断小于8694us大于9272us 一直循环否则跳出/高电平引导码判断小于4195us大于4712us 一直循环否则跳出/unsignedcharflag1=1;unsignedintCountline2=0;IR_Hongwai_1;Countli

9、ne2=IR_HongwaiRead_LSB_Cmd();if(Countline2<850)|(Countline2>950)return;Countline2=IR_HongwaiRead_MSB_Cmd();if(Countline2<400)|(Countline2>450)return;TimeByte=0;for(i=1;i<14;i+)TimeByte=TimeByte>>1;Countline2=IR_HongwaiRead_LSB_Cmd();if(Countline2<40)|(Countline2>85)/return

10、;Countline2=IR_HongwaiRead_MSB_Cmd();if(Countline2<40)|(Countline2>200)/return;if(Countline2>130)TimeByte|=0x80;/写1IR_Tireafg0=TimeByte;TimeByte=0;for(i=14;i<27;i+)TimeByte=TimeByte>>1;Countline2=IR_HongwaiRead_LSB_Cmd();if(Countline2<40)|(Countline2>85)return;Countline2=IR_H

11、ongwaiRead_MSB_Cmd();if(Countline2<40)|(Countline2>200)return;/低电平延时判断小于425us大于851us一直循环否则跳出/高电平延时判断小于425us大于1793us一直循环否则跳出/高电平延时大于1300us写1否则写0if(Countline2>130)TimeByte|=0x80;IR_Tireafg2 = TimeByte;TimeByte=0;for(i=27;i<35;i+)TimeByte=TimeByte>>1;Countline2=IR_HongwaiRead_LSB_Cmd(

12、);if(Countline2<40)|(Countline2>85)return;Countline2=IR_HongwaiRead_MSB_Cmd();if(Countline2<40)&&(Countline2>200)return;if(Countline2>130)TimeByte|=0x80;IR_Tireafg2=TimeByte;TimeByte=0;for(i=35;i<43;i+)TimeByte=TimeByte>>1;Countline2=IR_HongwaiRead_LSB_Cmd();while(Cou

13、ntline2<40)|(Countline2>85)return;Countline2=IR_HongwaiRead_MSB_Cmd();while(Countline2<40)|(Countline2>200)return;if(Countline2>130)TimeByte|=0x80;IR_Tireafg3 = TimeByte;/*判断用户正码和反码*/doif(IR_Tireafg0=0x08&IR_Tireafg1=0xF7)flag=0;whileflag=1);/*判断按键正码和反码*/*doif(IR_Tireafg2=IR_Tirea

14、fg3)flag1=0;while(flag1=0);*/*按下键码对应LED点亮*/switchcase(IR_Tireafg2)0x00:/按键0LED1_1;LED2_0;LED3_0;LED4_0;break;case0x01:/按键1LED1_0;LED2_1;LED3_0;LED4_0;break;case0x02:/按键2LED1_0;LED2_0;LED3_1;LED4_0;break;case0x03:/按键3LED1_0;LED2_0;LED3_0;LED4_1;break;case0x04:/按键4LED1_0;LED2_0;LED3_1;LED4_0;break;cas

15、e0x05:/按键5LED1_0;LED2_1;LED3_0;LED4_0;break;case0x06:/按键6LED1_1;LED2_0;LED3_0;LED4_0;break;case0x07:/按键7LED1_1;LED2_0;LED3_1;LED4_0;break;case0x08:/按键8LED1_0;LED2_0;LED3_0;LED4_0;break;case0x09:/按键9LED1_0;LED2_1;LED3_0;LED4_1;break;case0x15:/静音键LED1_0;LED2_1;LED3_1;LED4_0;break;case0x1C:/开机键LED1_1;L

16、ED2_0;LED3_0;LED4_1;break;case0x14:/OSD键LED1_1;LED2_1;LED3_0;LED4_0;break;case0x0E:/RECALL键LED1_0;LED2_0;LED3_1;LED4_1;break;case0x19:/SLEEP键LED1_1;LED2_1;LED3_1;LED4_0;break;case0x0A:/A/C键LED1_0;LED2_1;LED3_1;LED4_1;break;case0x0F:/TV/AV键LED1_1;LED2_1;LED3_1;LED4_1;break;case0x13:/PP键LED1_1;LED2_0;LED3_1;LED4_0;break;case0x0C:/GAME键LED1_0;LED2_1;LED3_1;LED4_1;break;case0x1E:/V-键LED1_1;LED2_1;LED3_1;LED4_0;break;case0x1F:/V+键LED1_0;LED2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论