红外遥控STM32程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/**********************************************************************************

*stm32F103VET6 红外驱动【遥控器解码实验程序】

*

*遥控器:42位编码

*

***********************************************************************************/

#include "stm32f10x.h"

#include "exti.h"

#include "beep.h"

#include "SysTick.h"

#define LED1_0GPIOD->BRR= 0x00000100 //LED低电平

#define LED2_0GPIOD->BRR= 0x00000200

#define LED3_0GPIOD->BRR= 0x00000400

#define LED4_0GPIOD->BRR= 0x00000800

#define LED1_1GPIOD->BSRR = 0x00000100//LED高电平

#define LED2_1GPIOD->BSRR = 0x00000200

#define LED3_1GPIOD->BSRR = 0x00000400

#define LED4_1GPIOD->BSRR = 0x00000800

#define IR_Hongwai_0GPIOE->BRR= 0x00000004//红外数据低电平

#define IR_Hongwai_1GPIOE->BSRR = 0x00000004//红外数据高电平

#define IR_Hongwai_x GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2)//读取红外电平状态

unsigned char TimeByte;

unsigned int IR_Tireafg[4];

unsigned int IR_xidwrit[8] = {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;//配置管脚速率50MHZ

GPIO_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++;//时间变量加1

Delay_10us(1);//延时10us

}while(IR_Hongwai_x == 0);//判断条件如果读出来的红外数据为高电平跳出循环体

return(Count1);//返回时间变量积数

}

/*

* 计算高脉宽持续时间Count2 * 10us

*/

unsigned int IR_HongwaiRead_MSB_Cmd()

{

unsigned int Count2 = 0;//定义时间变量

IR_Hongwai_1;//红外数据高电平

do//进入循环体

{

相关文档
最新文档