终于把433通讯整出来了,不过程序空间快不够了要好好优化一下
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* r480r.c
|
||||
*
|
||||
* Created on: 2021年10月15日
|
||||
* Author: wuwenfeng
|
||||
*/
|
||||
|
||||
|
||||
#include "r480r.h"
|
||||
#define read_infrared HAL_GPIO_ReadPin(infeaed_GPIO_Port,infeaed_Pin)
|
||||
|
||||
extern TIM_HandleTypeDef htim14;
|
||||
uint16_t timer_100us_tick=0;
|
||||
int read_bit_flag=0;
|
||||
int read_char_flag=0;
|
||||
char read_data_buffer[3];
|
||||
char read_begin=0;
|
||||
|
||||
void r480_init()
|
||||
{
|
||||
HAL_TIM_Base_Start_IT(&htim14);
|
||||
r480.times=0;
|
||||
}
|
||||
|
||||
void read_433_exit()
|
||||
{
|
||||
|
||||
char a=read_infrared;
|
||||
int b;
|
||||
if(read_begin==0)
|
||||
{
|
||||
if(a==0)
|
||||
{
|
||||
timer_100us_tick=0;
|
||||
return ;
|
||||
}else
|
||||
{
|
||||
if(timer_100us_tick>70&&timer_100us_tick<100)
|
||||
{
|
||||
read_begin=1;
|
||||
r480.times++;
|
||||
read_bit_flag=0;
|
||||
read_char_flag=0;
|
||||
timer_100us_tick=0;
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
}else
|
||||
{
|
||||
if(timer_100us_tick<5)
|
||||
{
|
||||
timer_100us_tick=0;
|
||||
return ;
|
||||
}else if(timer_100us_tick<12)
|
||||
{
|
||||
read_data_buffer[read_char_flag]<<=1;
|
||||
if(a==1)
|
||||
{
|
||||
read_data_buffer[read_char_flag]|=0x01;
|
||||
}
|
||||
read_bit_flag++;
|
||||
if(read_bit_flag==8)
|
||||
{
|
||||
read_bit_flag=0;
|
||||
read_char_flag++;
|
||||
if(read_char_flag==3)
|
||||
{
|
||||
//got data
|
||||
|
||||
read_char_flag=0;
|
||||
timer_100us_tick=0;
|
||||
|
||||
r480.add[0]=read_data_buffer[0];
|
||||
r480.add[1]=read_data_buffer[1];
|
||||
r480.key=read_data_buffer[2];
|
||||
}
|
||||
}
|
||||
timer_100us_tick=0;
|
||||
return ;
|
||||
}else//time out
|
||||
{
|
||||
read_begin=0;
|
||||
timer_100us_tick=0;
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
switch(GPIO_Pin)
|
||||
{
|
||||
case infeaed_Pin:
|
||||
read_433_exit();
|
||||
return ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//100us
|
||||
{
|
||||
if (htim == (&htim14))
|
||||
{
|
||||
timer_100us_tick++;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user