标题:
STM32红外通信实验程序 实现最基本的红外命令控制
[打印本页]
作者:
wjm12306
时间:
2021-1-17 16:41
标题:
STM32红外通信实验程序 实现最基本的红外命令控制
PA0为红外接收模块信号口
能实现最基本的红外命令控制
仅供参考
主函数
uint8_t IrValue[4]; //设置一个4元素数组变量
void delay_us(uint16_t time) //粗略微秒延时函数
{
uint16_t i=0;
while(time--)
{
i=10;
while(i--) ;
}
}
int main(void) //主函数
{
EXTI_Config();
GPIO_Config();
while(1)
{
if(IrValue[2] == 0x46) //红外按键键值
{
GPIO_SetBits(GPIOB,GPIO_Pin_0);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
}
}
复制代码
中断服务函数
void EXTI0_IRQHandler(void)//中断服务函数
{
if(EXTI_GetITStatus(EXTI_Line0) == 1)
{
uint16_t i,j;
uint16_t Time=0;
delay_us(5000); //延时5ms
if(DO==1) //确定不是外界干扰,DO为红外模块OUT口连接的引脚PA0
{
return;
}
while(!DO); //跳过9ms
while(DO); //跳过4.5ms
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
while(!DO);
while(DO)
{
delay_us(100);
Time++;
if(Time>30)
{
return;
}
}
IrValue[j] = IrValue[j] >>1;
if(Time>=10)
{
IrValue[j] |= 0x80;
}
Time=0;
}
}
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
复制代码
中断配置函数
void EXTI_Config(void) //中断初始化配置函数
{
GPIO_InitTypeDef GPIO_InitStruct;//GPIO结构体变量
EXTI_InitTypeDef EXTI_InitStruct;//EXTI结构体变量
NVIC_InitTypeDef NVIC_InitStruct;//NVIC结构体变量
//NVIC初始化配置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
//GPIO初始化配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//EXTI初始化配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitStruct.EXTI_Line = EXTI_Line0;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
}
复制代码
全部资料51hei下载地址:
IR.7z
(175.27 KB, 下载次数: 32)
2021-1-17 19:27 上传
点击文件名下载附件
源码
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1