/**

  */
/* Includes ------------------------------------------------------------------*/
#define MAIN_C

#include "all.h"
/* Private define ------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void APP_SystemClockConfig(void);
void APP_ConfigGPIO(void);


/**
  * @brief  系统时钟配置函数
  * @param  无
  * @retval 无
  */
void APP_SystemClockConfig(void)
{
  /* 使能HSI */
  LL_RCC_HSI_Enable();
  while(LL_RCC_HSI_IsReady() != 1)
  {
  }

  /* 设置 AHB 分频*/
  LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);

  /* 配置HSISYS作为系统时钟源 */
  LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSISYS);
  while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSISYS)
  {
  }

  /* 设置 APB1 分频*/
  LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
  LL_Init1msTick(8000000);

  /* 更新系统时钟全局变量SystemCoreClock(也可以通过调用SystemCoreClockUpdate函数更新) */
  LL_SetSystemCoreClock(8000000);
}



void systick_init(void) 
{
  SysTick_Config(SystemCoreClock/100);  // 定时器设置为10ms
  NVIC_SetPriority(SysTick_IRQn,0x0);//设置最高优先级
  SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;//使能systick定时器
}




void SET_PIN_PULL_for_LowPower(GPIO_TypeDef *GPIOx, uint32_t Pin )
{u8 i=GET_PIN_LEVEL_AND_FLOAT(GPIOx,Pin);
if(i!=pin_float)LL_GPIO_SetPinPull(GPIOx,Pin,LL_GPIO_PULL_NO);
else LL_GPIO_SetPinPull(GPIOx,Pin,LL_GPIO_PULL_UP);
}



void USER_INI(void)
{

TIME.work_ms10=0;
RF.active_10ms=0;

}
void SEC_EXE(void)
{
if(RF.active_10ms==0)
	LL_GPIO_SetOutputPin(p_led2);

if(SYS.b_tick==0)return;
SYS.b_tick=0;
if(RF.active_10ms)
	printf("RF:%02X %02X %02X\r\n",rf_dat_buf[0],rf_dat_buf[1],rf_dat_buf[2]);

}


#define MYID_ADD0		(0x8004000)
#define MYID_ADD1		(0x8004001)


/*
准备工作：
连接好蜂鸟接收模块，注意电压匹配，本DEMO板可以通过R6和R7选择3.3/5V电压选择


1，PA1为接收DAT脚，DAT脚设为浮空输入模式，且为双边沿触发中断
2，在中断调用REC_RF_us_INT对当前脉宽进行识别，可以只识别低电平脉宽即可，脉冲宽度误差通常设为50%比例进行误码验证，这个比例过小对接收距离会有一定影响。
3，为了安全程序中包含了二次校验，成功闪烁p_led2
4，在主程序调用CHK_RF_DECODE对收到的编码进行串口输出
5，对码、存储及比较程序从略，用户需自行完成，本程序旨在示意解码过程


*/
int main(void)
{/* 配置系统时钟 */
APP_SystemClockConfig();
RCC_INI();

GPIO_INI();
APP_ConfigUsart(USART1);
SET_PF1_for_UART_or_GPIO(1);//双边沿触发中断使能
APP_ConfigTIM1();
GPIO_rf_INT_en_or_dis(1);//设为双边沿触发
systick_init();
myDelay_ms(50);
USER_INI();
//IWDG_Config();
printf("蜂鸟无线RF433(微R3)接收测试\r\n");
while (1)
	{
	SEC_EXE();
	CHK_RF_DECODE();
	
	}
}


/************************ (C) COPYRIGHT Puya *****END OF FILE****/
