教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 公文资料 >

STM32F030解码PT2264

来源:网络收集 时间:2026-09-02
导读: STM32F030解码PT2264 STM32F030F4P6解码PT2264 QQ 7982728 思路: 接收板的数据引脚接030的PA4,采用中断方式。电平变化启动定时器3进行计数。 单片机内部RC 8M。 2264的R是4.7M欧姆 编译环境:KEIL 5.11 以下是关键函数。 void EXTI4_15_IRQHandler(void)//

STM32F030解码PT2264

STM32F030F4P6解码PT2264 QQ 7982728

思路:

接收板的数据引脚接030的PA4,采用中断方式。电平变化启动定时器3进行计数。

单片机内部RC 8M。

2264的R是4.7M欧姆

编译环境:KEIL 5.11

以下是关键函数。

void EXTI4_15_IRQHandler(void)//外部中断程序

{

if(EXTI_GetITStatus(EXTI_Line4) != RESET)///判断是否是外部线路4电平发生变化

{

TIM3->CR1 &=0xfffe;//关闭定时器

one=maikuan;

maikuan=TIM3->CNT;//读取定时器计数值

TIM3->CNT=0;//定时器计数值清零

TIM3->CR1|=1; //重新启动定时器

EXTI_ClearITPendingBit(EXTI_Line4); //清除中断标志 if(sync==0)//判断是否已经收到同步帧

{

if((maikuan>11000)&(one>(xiao-fanwei)&one<(xiao+fanwei))){sync=1;} //这里 //判断同步短帧和长帧的脉冲宽度。如果时间合适,就设置同步标志=1

}

else{//已经同步

if(maikuan>(xiao-fanwei)&&maikuan<(xiao+fanwei))

{HL[mcsl]=0;} //判断数据宽度是否符合数据0的排列

else

if(maikuan>(da-fanwei)&&maikuan<(da+fanwei)){HL[mcsl]=1;}//或者数据1的排列

else{

sync=0;//其他宽度,清零同步标志

mcsl=0;

last_key_data=0xffffffff;//上一次数据也清零

}

mcsl++;//数据正确,计数器加一,2264的数据变化一共是48次。 if(mcsl==48)//数据收完,开始判断脉冲宽度组合

{

for(a=0;a<12;a++)

{

da_data=da_data*4;

if(HL[a*4+0]*8+HL[a*4+1]*4+HL[a*4+2]*2+HL[a*4+3]==0x05){ //数据全0 } else

if(HL[a*4+0]*8+HL[a*4+1]*4+HL[a*4+2]*2+HL[a*4+3]==0x0a){da_data+=1;}//数据全1 else

if(HL[a*4+0]*8+HL[a*4+1]*4+HL[a*4+2]*2+HL[a*4+3]==0x06){da_data+=2;}//高阻抗

STM32F030解码PT2264

}

if(last_key_data==da_data) //做误码判断,2次一样数据才作为//正确输出

{if((u8)da_data!=0){

key_data=da_data;//

key_upd=1;}

}

Else {

last_key_data=da_data;

}

mcsl=0;

sync=0;

da_data=0;

}

}

}

}

void TIM3_Config(void)//定时器配置

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

TIM_TimeBaseStructure.TIM_Prescaler = 8;//预分频8,计数按照1M速度,每次1us

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_Period = 65535;

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_Cmd(TIM3, ENABLE);

}

void EXIT_KEY_Init(void)//输入引脚配置

{

GPIO_InitTypeDef GPIO_InitStruct;

EXTI_InitTypeDef EXTI_InitStruct;

NVIC_InitTypeDef NVIC_InitStruct;

/* config the extiline(PB0) clock and AFIO clock */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

NVIC_InitStruct.NVIC_IRQChannel = EXTI4_15_IRQn;;//开中断入口

NVIC_InitStruct.NVIC_IRQChannelPriority = 1;

NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

STM32F030解码PT2264

NVIC_Init(&NVIC_InitStruct);

/* EXTI line gpio config(PA4) */

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4; //

GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;//输入模式

GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_2;

GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //

GPIO_Init(GPIOA, &GPIO_InitStruct);

/* EXTI line(PB0) mode config */

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource4); EXTI_InitStruct.EXTI_Line = EXTI_Line4;

EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling; //上升下降都中断 EXTI_InitStruct.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStruct);

}

…… 此处隐藏:859字,全部文档内容请下载后查看。喜欢就下载吧 ……
STM32F030解码PT2264.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/710261.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)