STM32 红外学习程序

STM32 红外学习程序

ID:37713959

大小:38.00 KB

页数:4页

时间:2019-05-29

STM32 红外学习程序_第1页
STM32 红外学习程序_第2页
STM32 红外学习程序_第3页
STM32 红外学习程序_第4页
资源描述:

《STM32 红外学习程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/红外遥控初始化//设置IO以及定时器4的输入捕获voidRemote_Init(void){GPIO_InitTypeDefGPIO_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_ICInitTypeDefTIM_ICInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTB时钟RCC_APB1PeriphCloc

2、kCmd(RCC_APB1Periph_TIM4,ENABLE);//TIM4时钟使能GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//PB9输入GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//上拉输入GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_9);//初始化GPIOB.9TIM_TimeBaseStr

3、ucture.TIM_Period=10000;//设定计数器自动重装值最大10ms溢出TIM_TimeBaseStructure.TIM_Prescaler=(72-1);//预分频器,1M的计数频率,1us加1.TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//设置时钟分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上计数模式TIM_TimeBaseInit(TIM4,&TIM_Tim

4、eBaseStructure);//根据指定的参数初始化TIMxTIM_ICInitStructure.TIM_Channel=TIM_Channel_4;//选择输入端IC4映射到TI4上TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//上升沿捕获TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;//配置输入分频,

5、不分频TIM_ICInitStructure.TIM_ICFilter=0x03;//IC4F=0011配置输入滤波器8个定时器时钟周期滤波TIM_ICInit(TIM4,&TIM_ICInitStructure);//初始化定时器输入捕获通道TIM_Cmd(TIM4,ENABLE);//使能定时器4NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;//TIM3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//先占优先级0级NVIC_InitStr

6、ucture.NVIC_IRQChannelSubPriority=3;//从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能NVIC_Init(&NVIC_InitStructure);//根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器TIM_ITConfig(TIM4,TIM_IT_Update

7、TIM_IT_CC4,ENABLE);//允许更新中断,允许CC4IE捕获中断}//遥控器接收状态//[7]:收到了引导码标志//[6]:得到了一个按键的所有信息

8、//[5]:保留//[4]:标记上升沿是否已经被捕获//[3:0]:溢出计时器u8RmtSta=0;u16Dval;//下降沿时计数器的值u32RmtRec=0;//红外接收到的数据u8RmtCnt=0;//按键按下的次数//定时器2中断服务程序voidTIM4_IRQHandler(void){if(TIM_GetITStatus(TIM4,TIM_IT_Update)!=RESET){if(RmtSta&0x80)//上次有数据被接收到了{RmtSta&=~0X10;//取消上升沿已经被捕获标记if((RmtSta&0X0F)==0X00)RmtSt

9、a

10、=1<<6;//标记已经完成一次按键的键值信息采集if((RmtSta&0X

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。