STM32 PWM捕获红外信号并且通过液晶显示解码信号.doc_第1页
STM32 PWM捕获红外信号并且通过液晶显示解码信号.doc_第2页
STM32 PWM捕获红外信号并且通过液晶显示解码信号.doc_第3页
STM32 PWM捕获红外信号并且通过液晶显示解码信号.doc_第4页
STM32 PWM捕获红外信号并且通过液晶显示解码信号.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

#include led.h#include delay.h#include sys.h#include lcd.h#include usart.h #include remote.h int main(void) delay_init(72); /延时函数初始化 NVIC_Configuration(); /设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); /串口初始化为9600 LED_Init(); /LED端口初始化 LCD_Init(); Remote_Init();/红外接收初始化 POINT_COLOR=RED;/设置字体为红色 LCD_ShowString(60,50,Mini STM32); LCD_ShowString(60,70,REMOTE TEST); LCD_ShowString(60,90,ATOMALIENTEK); LCD_ShowString(60,110,2011/1/1); while(1) if(IrRecFlag = 1) IrRecAddr1 = IrRecBuff0; IrRecAddr2 = IrRecBuff1; IrRecData1 = IrRecBuff2; IrRecData2 = IrRecBuff3; IrRecFlag = 0; switch(IrRecData1) case 0: LCD_ShowString(86,150, ERROR); break; case 162: LCD_ShowString(86,150, POWER); break; case 98: LCD_ShowString(86,150, UP );break; case 2: LCD_ShowString(86,150, PLAY );break; case 226: LCD_ShowString(86,150, ALIEN );break; case 194: LCD_ShowString(86,150, RIGHT );break; case 34: LCD_ShowString(86,150, LEFT );break; case 56: LCD_ShowString(86,150, 8 );break; case 224: LCD_ShowString(86,150, VOL- );break; case 168: LCD_ShowString(86,150, DOWN );break; case 144: LCD_ShowString(86,150, VOL+ );break; case 104: LCD_ShowString(86,150, 1 );break; case 152: LCD_ShowString(86,150, 2 );break; case 176: LCD_ShowString(86,150, 3 );break; case 48: LCD_ShowString(86,150, 4 );break; case 24: LCD_ShowString(86,150, 5 );break; case 122: LCD_ShowString(86,150, 6 );break; case 16: LCD_ShowString(86,150, 7 );break; case 90: LCD_ShowString(86,150, 9 );break; case 66: LCD_ShowString(86,150, 0 );break; case 82: LCD_ShowString(86,150, DELETE);break; #include remote.h#include delay.h#include usart.h#include / /本程序只供学习使用,未经作者许可,不得用于其它任何用途/ALIENTEK战舰STM32开发板/红外遥控解码驱动 代码 /正点原子ALIENTEK/技术论坛:/修改日期:2012/9/12/版本:V1.0/版权所有,盗版必究。/Copyright(C) 广州市星翼电子科技有限公司 2009-2019/All rights reserved /const u8 IrCode8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;u8 IrRecStep = 0; u8 IrIndex = 0; u8 IrRecFlag = 0; u8 IrRecBuff4; u8 IrRecAddr1; u8 IrRecAddr2;u8 IrRecData1; u8 IrRecData2;u16 IrCycle = 0; u16 IrHigh = 0; void Remote_Init(void) GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_1); TIM_TimeBaseStructure.TIM_Period = 0xffff; TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1); TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x03; TIM_PWMIConfig(TIM2, &TIM_ICInitStructure); TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2); TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE); TIM_ClearITPendingBit(TIM2,TIM_IT_CC2); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM2, ENABLE);void TIM2_IRQHandler(void) u16 Dval=0; if(TIM_GetITStatus(TIM2,TIM_IT_CC2)!=RESET) TIM_ClearITPendingBit(TIM2, TIM_IT_CC2); IrCycle = TIM_GetCapture2(TIM2); IrHigh =TIM_GetCapture1(TIM2); Dval= IrCycle-IrHigh; TIM_SetCounter(TIM2,0); switch(IrRecStep) case 0: IrIndex=0; if (Dval IrHeadLow_Min) IrRecStep = 1; memset(IrRecBuff,0,sizeof(IrRecBuff); break; case 1: if (IrHigh IrHeadHigh_Min) IrRecStep = 2; break; case 2: if (IrCycle IrData00_Min)&(IrCycle IrData0_Min)&(IrHigh IrData10_Min)&(IrCycle IrData1_Min)&(IrHigh 3 |= IrCode7-IrIndex & 0x07; IrIndex+; else IrRecStep = 0; else IrRecStep = 0; if(IrIndex = 32) IrRecStep = 0; IrRecFlag = 1; break; default:break; #ifndef _RED_H#define _RED_H #include sys.h / /本程序只供学习使用,未经作者许可,不得用于其它任何用途/ALIENTEK战舰STM32开发板/红外遥控解码驱动 代码 /正点原子ALIENTEK/技术论坛:/修改日期:2012/9/12/版本:V1.0/版权所有,盗版必究。/Copyright(C) 广州市星翼电子科技有限公司 2009-2019/All rights reserved / #define RDATA PAin(1) /红外数据输入脚/-引导码低电平范围-#define IrHeadLow_Max 9500 #define IrHeadLow_Min 8400 /-引导码高电平范围-#define IrHeadHigh_Max 5000 #define IrHeadHigh_Min 4200 /-数据0的周期范围-#define IrData00_Max 1200 #define IrData00_Min 1040 /-数据1的周期范围-#define IrData10_Max 2320 #define IrData10_Min 2160 /-数据0的占空比(高电平)范围-#define IrData0_Max 640 #define IrData0_Min 300 /-数据1的占空比(高电平)范围-#define IrData1_Max 1760 #define IrData1_Min 1600 #define

温馨提示

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

评论

0/150

提交评论