已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* stm32F103VET6 红外驱动【遥控器解码实验程序】* 遥控器 :42位编码*/#include stm32f10x.h#include exti.h#include beep.h#include SysTick.h #define LED1_0 GPIOD-BRR= 0x00000100 /LED低电平#define LED2_0 GPIOD-BRR= 0x00000200#define LED3_0 GPIOD-BRR= 0x00000400#define LED4_0 GPIOD-BRR= 0x00000800#define LED1_1 GPIOD-BSRR = 0x00000100 /LED高电平#define LED2_1 GPIOD-BSRR = 0x00000200#define LED3_1 GPIOD-BSRR = 0x00000400#define LED4_1 GPIOD-BSRR = 0x00000800 #define IR_Hongwai_0 GPIOE-BRR= 0x00000004 /红外数据低电平#define IR_Hongwai_1 GPIOE-BSRR = 0x00000004 /红外数据高电平#define IR_Hongwai_x GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2)/读取红外电平状态unsigned char TimeByte;unsigned int IR_Tireafg4;unsigned int IR_xidwrit8 = 0, 0, 0, 0, 0, 0 ,0, 0;/* GPIO端口配置子函数*/void GPIO_InitStructReadtempCmd(void)GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;/配置GPIO管脚GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;/配置管脚为输入上拉GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;/配置管脚速率50MHZGPIO_Init(GPIOE, &GPIO_InitStruct);/初始化指定端口GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;/配置管脚陪推挽式输出GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD, &GPIO_InitStruct); /* 配置外设时钟子函数*/void RCC_APB2PeriphReadtempyCmd(void)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);/打开GPIOB外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);/打开GPIOE外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);/打开GPIOD外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);/打开AFIO复用功能外设时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); /* 计算低脉宽持续时间Count1 * 10us*/unsigned int IR_HongwaiRead_LSB_Cmd()unsigned int Count1 = 0; /定义时间变量IR_Hongwai_0; /红外数据低电平do /进入循环体Count1+; /时间变量加1Delay_10us(1); /延时10uswhile(IR_Hongwai_x = 0);/判断条件如果读出来的红外数据为高电平跳出循环体return(Count1); /返回时间变量积数/* 计算高脉宽持续时间Count2 * 10us*/unsigned int IR_HongwaiRead_MSB_Cmd()unsigned int Count2 = 0; /定义时间变量IR_Hongwai_1; /红外数据高电平do /进入循环体 Count2+; /时间变量加1Delay_10us(1); /延时10uswhile(IR_Hongwai_x = 1);/判断条件如果读出来的红外数据为低电平跳出循环体return(Count2);/* 函数主体*/int main(void)SystemInit(); /初始化系统时钟进入72M主频SYSTICK_InitStructReadTCmd(); /初始化SysTick配置器寄存器RCC_APB2PeriphReadtempyCmd(); /初始化外设时钟配置寄存器GPIO_InitStructReadtempCmd(); /初始化GPIO端口配置寄存器EXTI_InitStructReadtempCmd(); /初始化EXTI外部线路寄存器NVIC_InitStructReadtempCmd(); /初始化NVIC中断配置寄存器while(1) /* EXTI外部中断线服务程序*/void EXTI2_IRQHandler(void)unsigned char i = 0;unsigned char flag = 1;/ unsigned char flag1 = 1;unsigned int Countline2 = 0;IR_Hongwai_1;Countline2 = IR_HongwaiRead_LSB_Cmd();/低电平引导码 9ms判断if(Countline2 950) /小于8694us 大于9272us 一直循环否则跳出return; Countline2 = IR_HongwaiRead_MSB_Cmd();/高电平引导码 4.5ms判断if(Countline2 450) /小于4195us 大于4712us 一直循环否则跳出return;TimeByte = 0;for(i = 1; i 1;Countline2 = IR_HongwaiRead_LSB_Cmd(); /低电平延时0.56 判断if(Countline2 85)/小于425us 大于851us 一直循环否则跳出return;Countline2 = IR_HongwaiRead_MSB_Cmd(); /高电平延时0.56判断if(Countline2 200)/小于425us 大于1793us 一直循环否则跳出return;if( Countline2 130)/高电平延时大于1300us写1否则写0TimeByte |= 0x80;/写1IR_Tireafg0 = TimeByte;TimeByte = 0;for(i = 14; i 1;Countline2 = IR_HongwaiRead_LSB_Cmd();if(Countline2 85)return;Countline2 = IR_HongwaiRead_MSB_Cmd();if(Countline2 200)return;if( Countline2 130)TimeByte |= 0x80;IR_Tireafg1 = TimeByte;TimeByte = 0;for(i = 27; i 1;Countline2 = IR_HongwaiRead_LSB_Cmd();if(Countline2 85)return;Countline2 = IR_HongwaiRead_MSB_Cmd();if(Countline2 200)return;if( Countline2 130)TimeByte |= 0x80;IR_Tireafg2 = TimeByte;TimeByte = 0;for(i = 35; i 1;Countline2 = IR_HongwaiRead_LSB_Cmd();while(Countline2 85)return;Countline2 = IR_HongwaiRead_MSB_Cmd();while(Countline2 200)return;if( Countline2 130)TimeByte |= 0x80;IR_Tireafg3 = TimeByte;/*判断用户正码和反码*/doif(IR_Tireafg0 = 0x08 & IR_Tireafg1 = 0xF7 )flag = 0; while(flag = 1); /*判断按键正码和反码*/* doif(IR_Tireafg2 = IR_Tireafg3)flag1 = 0; while(flag1 = 0); */*按下键码对应LED点亮*/switch(IR_Tireafg2)case 0x00: /按键 0LED1_1; LED2_0; LED3_0; LED4_0;break;case 0x01: /按键 1LED1_0; LED2_1; LED3_0; LED4_0;break;case 0x02: /按键 2LED1_0; LED2_0; LED3_1; LED4_0;break;case 0x03: /按键 3LED1_0; LED2_0; LED3_0; LED4_1;break;case 0x04: /按键 4LED1_0; LED2_0; LED3_1; LED4_0;break;case 0x05: /按键 5LED1_0; LED2_1; LED3_0; LED4_0;break;case 0x06: /按键 6LED1_1; LED2_0; LED3_0; LED4_0;break;case 0x07: /按键 7LED1_1; LED2_0; LED3_1; LED4_0;break;case 0x08: /按键 8LED1_0; LED2_0; LED3_0; LED4_0;break;case 0x09: /按键 9LED1_0; LED2_1; LED3_0; LED4_1;break;case 0x15: /静音键LED1_0; LED2_1; LED3_1; LED4_0;break;case 0x1C: /开机键LED1_1; LED2_0; LED3_0; LED4_1;break;case 0x14: /OSD键LED1_1; LED2_1; LED3_0; LED4_0;break;case 0x0E: /RECALL键LED1_0; LED2_0; LED3_1; LED4_1;break;case 0x19: /SLEEP键LED1_1; LED2_1; LED3_1; LED4_0;break;case 0x0A: /A/C键LED1_0; LED2_1; LED3_1; LED4_1;break;case 0x0F: /TV/AV键LED1_1; LED2_1; LED3_1; LED4_1;break;case 0x13: /PP键LED1_1; LED2_0; LED3_1; LED4_0;break;case 0x0C: /GAME键LED1_0; LED2_1; LED3_1; LED4_1;break;case 0x1E: /V-键LED1_1; LED2_1; LED3_1; LED4_0;break;case 0x1F: /V+键LED1_0; LED2_0; LED3_1; L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 矿井智能通风与安全题库及答案解析
- 产品用户反馈收集表
- 网络安全多选题库及答案解析
- 2025年清洁能源发展政策对环境可持续发展的影响研究报告及未来发展趋势预测
- 停车技术考试题目及答案
- 安全资格证a极考试题库及答案解析
- 2025年自贡中考化学真题及答案
- 跨平台网络舆情监控与分析工具快速响应版
- 毛笔书法五级真题及答案
- 成都基金从业考试面授及答案解析
- 安静主题班会课件
- 手术室患者体位管理
- 四川省绵阳市2025届高三第三次诊断性考试政治试卷(含答案)
- 年会策划方案(中国好声音)小品剧本
- 《电力电子技术》课程标准(含课程思政元素)
- 旅行社安全管理制度
- 2025-2030中国水电行业现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2024年上海中考数学一模各区18、24、25试题及答案
- 五常大米香华夏课件-《人文与社会》六年级上册黑教版
- 七年级地理上册第一二章单元综合测试题
- 大数据与会计职业生涯规划
评论
0/150
提交评论