版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/* * stm32F103VET6 红外驱动【遥控器解码实验程序】 * * 遥控器 :42位编码 * */ #include "stm32f10x.h" #include "exti.h" #include "beep.h" #include "SysTick.h" #define
2、; LED1_0 GPIOD->BRR = 0x00000100 /LED低电平 #define LED2_0 GPIOD->BRR = 0x00000200 #define LED3_0 GPIOD->BRR = 0x00000400 #define LE
3、D4_0 GPIOD->BRR = 0x00000800 #define LED1_1 GPIOD->BSRR = 0x00000100 /LED高电平 #define LED2_1 GPIOD->BSRR = 0x00000200 #define LE
4、D3_1 GPIOD->BSRR = 0x00000400 #define LED4_1 GPIOD->BSRR = 0x00000800 #define IR_Hongwai_0 GPIOE->BRR = 0x00000004 /红外数据低电平 #define&
5、#160; 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_xidwr
6、it8 = 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;
7、;/配置管脚为输入上拉 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; /配置管脚速率50MHZ GPIO_Init(GPIOE, &GPIO_InitStruct); /初始化指定端口 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; /配置管脚陪推挽式输出 GPIO_InitStruct.GPIO_Spe
8、ed = 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);
9、 /* * 配置外设时钟子函数 */ void RCC_APB2PeriphReadtempyCmd(void) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /打开GPIOB外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); /打开GPIOE外设时钟 RCC_APB2PeriphC
10、lockCmd(RCC_APB2Periph_GPIOD, ENABLE); /打开GPIOD外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE); /打开AFIO复用功能外设时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); /* * 计算低脉宽持续时间Count1 * 10us */ unsigned int IR_Hongwa
11、iRead_LSB_Cmd() unsigned int Count1 = 0; /定义时间变量 IR_Hongwai_0; /红外数据低电平 do /进入循环体 Count1+; /时间变量加1 Delay_10us(1); /延时10us while(IR_Hongwai_x = 0); /判断条件如果读出来的红外数据为高电平跳出循环
12、体 return(Count1); /返回时间变量积数 /* * 计算高脉宽持续时间Count2 * 10us */ unsigned int IR_HongwaiRead_MSB_Cmd() unsigned int Count2 = 0; /定义时间变量 IR_Hongwai_1; /红外数据高电平 do /进入循环体
13、60;Count2+; /时间变量加1 Delay_10us(1); /延时10us while(IR_Hongwai_x = 1); /判断条件如果读出来的红外数据为低电平跳出循环体 return(Count2); /* * 函数主体 */ int main(void) SystemInit(); /初始化系统时钟进入72M主频 SYS
14、TICK_InitStructReadTCmd(); /初始化SysTick配置器寄存器 RCC_APB2PeriphReadtempyCmd(); /初始化外设时钟配置寄存器 GPIO_InitStructReadtempCmd(); /初始化GPIO端口配置寄存器 EXTI_InitStructReadtempCmd(); /初始化EXTI外部线路寄存器 NVIC_InitStructReadtempCmd(); /初始化NVIC中
15、断配置寄存器 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; Countline
16、2 = IR_HongwaiRead_LSB_Cmd(); /低电平引导码 9ms判断 if(Countline2 < 850) | (Countline2 > 950) /小于8694us 大于9272us 一直循环否则跳出 return; Countline2 = IR_HongwaiRead_MSB_Cmd(); /高电平引导码 4.5ms判断 if(Countline2 < 400) | (Countline2 > 450) /小于4195u
17、s 大于4712us 一直循环否则跳出 return; TimeByte = 0; for(i = 1; i < 14; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd(); /低电平延时0.56 判断 if(Countline2 < 40) | (Countline2 > 85)/小于425us 大于851us 一直循环否则跳出 retur
18、n; Countline2 = IR_HongwaiRead_MSB_Cmd(); /高电平延时0.56判断 if(Countline2 < 40) | (Countline2 > 200)/小于425us 大于1793us 一直循环否则跳出 return; if( Countline2 > 130) /高电平延时大于1300us写1否则写0 TimeByte |= 0x80; /写1
19、160;IR_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_HongwaiRead_MSB_Cmd(); if(Countl
20、ine2 < 40) | (Countline2 > 200) return; if( Countline2 > 130) TimeByte |= 0x80; IR_Tireafg1 = TimeByte; TimeByte = 0; for(i = 27; i < 35; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd();
21、 if(Countline2 < 40) | (Countline2 > 85) return; Countline2 = IR_HongwaiRead_MSB_Cmd(); if(Countline2 < 40) && (Countline2 > 200) return; if( Countline2 > 130) TimeByte |= 0x80; IR_Tireafg2 = Tim
22、eByte; TimeByte = 0; for(i = 35; i < 43; i+) TimeByte = TimeByte >> 1; Countline2 = IR_HongwaiRead_LSB_Cmd(); while(Countline2 < 40) | (Countline2 > 85) return; Countline2 = IR_HongwaiRead_MSB_Cmd(); while(Countline2 < 40) |
23、 (Countline2 > 200) return; if( Countline2 > 130) TimeByte |= 0x80; IR_Tireafg3 = TimeByte; /*判断用户正码和反码*/ do if(IR_Tireafg0 = 0x08 & IR_Tireafg1 = 0xF7 ) flag = 0; while(flag = 1);
24、160; /*判断按键正码和反码*/ /* do if(IR_Tireafg2 = IR_Tireafg3) flag1 = 0; while(flag1 = 0); */ /*按下键码对应LED点亮*/ switch (IR_Tireafg2) case
25、0x00: /按键 0 LED1_1; LED2_0; LED3_0; LED4_0; break; case 0x01: /按键 1 LED1_0; LED2_1; LED3_0; LED4_0; break; case 0x02: /按键 2 LED1
26、_0; LED2_0; LED3_1; LED4_0; break; case 0x03: /按键 3 LED1_0; LED2_0; LED3_0; LED4_1; break; case 0x04: /按键 4 LED1_0; LED2_0; LED3_1; LED4_0; break; c
27、ase 0x05: /按键 5 LED1_0; LED2_1; LED3_0; LED4_0; break; case 0x06: /按键 6 LED1_1; LED2_0; LED3_0; LED4_0; break; case 0x07:
28、0;/按键 7 LED1_1; LED2_0; LED3_1; LED4_0; break; case 0x08: /按键 8 LED1_0; LED2_0; LED3_0; LED4_0; break; case 0x09: /按键 9 LED1_0; LED2_1; LED3_0; LED4_1;
29、160;break; case 0x15: /静音键 LED1_0; LED2_1; LED3_1; LED4_0; break; case 0x1C: /开机键 LED1_1; LED2_0; LED3_0; LED4_1; break; case
30、160; 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: /S
31、LEEP键 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;&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考物理复习中考趋势题3项目式学习课件
- 第七八单元及总复习教案
- 物流配送司机招聘合同模板
- 四年级科学下册教案
- 城市广场改造专业施工合同范本
- 七台河市公园公共艺术展示规范
- 市政工程工字钢租赁合同
- 公共交通建设资金使用暂行条例
- 医疗中心雨污管网维护合同
- 企业车辆更新政策样本
- 部编版《道德与法治》二年级上册第9课《这些是大家的》课件(共50张课件)
- 2024年(每周一练)语文五年级上册基础练习题(含答案)
- 2024-2030年中国中低温煤焦油行业现状调研与发展前景预测分析研究报告
- 2025届贵州省贵阳市一中高三六校第一次联考物理试卷含解析
- GB/T 10069.3-2024旋转电机噪声测定方法及限值第3部分:噪声限值
- 旅游管理专业建设实施方案
- 《红楼梦》菊花诗鉴赏-部编版2019下册语文课件
- 一年级下册道德与法治《分享真快乐》课件【新部编版】
- 统编版(2024新版)道德与法治七年级上册8.1《认识生命》教案
- 甘肃省定西市2023-2024学年八年级上学期期中语文试题
- 2024年全国职业院校技能大赛中职(数字产品检测与维护赛项)考试题库(含答案)
评论
0/150
提交评论