Files
SM-1000M/RTX5_20220316/Driver/bsp/bsp.c
2026-04-23 10:50:18 +08:00

135 lines
4.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*****************************************************************
头文件
*****************************************************************
*/
#include "bsp.h"
#include "sdi12.h"
/*
*****************************************************************
变量
*****************************************************************
*/
u8 Par_store_flag; //设备参数是否写入标志
u32 *total_s=0, *free_s=0;
uint8_t total_flag;
/*
*********************************************************************************************************
* 函 数 名: bsp_init()
* 功能说明: 设备启动初始化、写入并且读取设备参数、远传校时
* 输 入 设备参数Init_Data_Equipment
* 输 出 :无
*********************************************************************************************************
*/
float ADCADCADFC=0;
char hhmmsss[10]={'\0'},yymmddd[10]={'\0'},addr;
void bsp_init(void)
{
u8 kahtkl = 1;
u8 iap_flag[2]={0x30};
unsigned char i = 1;
STB_ITStatus STB_ITStatusS;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
EN_INT;
bsp_InitDWT();
timer2_init();
Usart5_Configuration(9600); //485串口初始化
/**************设备启动方式**************/
STB_ITStatusS = Get_Wkup_MYITstatus();//获取启动时的源
EEPROM_ReadBytes(188,iap_flag,1);
//u5_printf("iap_flag is:%x\r\n",iap_flag[0]);
if(iap_flag[0]==0x31)
{
MYITStatus1.AlarmA_ITStatus=0;
MYITStatus1.AlarmB_ITStatus=0;
MYITStatus1.WKUP1_ITStatus=0;
MYITStatus1.WKUP_MEA_WIFI=0;
MYITStatus1.WKUP_POWBUTTON=1;
MYITStatus1.WUT_ITStatus=0;
STB_ITStatusS=Power_ON;
iap_flag[0]=0x30;
EEPROM_WriteBytes(188,iap_flag,1);
}
RtcWakeUppin();
PWR_CTRL_Init(); //系统电源初始化配置,关闭电路板外设所有电源
PWR_CTRL3V3_H; //开启3.3V总电源
PWR_CTRLTFWF_H;
// addr = Sdi_readaddress();
//PWR_CTRLTFWF_H;
USART2_Configuration(9600); //BC25串口初始化
USART3_Configuration(9600); //L76C串口初始化
USART4_Configuration(115200); //WIFI接口
ADC15_Init(); //ADC初始化
DS3231_Init();
sdi12_Power_init();
PWR_ClearFlag(PWR_FLAG_WU);//唤醒标志
EEPROM_ReadBytes(140,&Par_store_flag,1);//设备是否已经存储了参数 1存储 0无参数
Init_Data_Equipment = Read_Equipment_Par();//读取设备参数
//u5_printf("Equipment Start..........\r\n");
if(Par_store_flag != 0x01 || (strstr(Init_Data_Equipment.IOT_Theme_name,"SM-1000M") == 0)) //写入设备参数
{
Write_Factory_Par();
EEPROM_WriteDWords(180,0,1);
//u5_printf("read Init_Data_Equipment..........\r\n");
Init_Data_Equipment = Read_Equipment_Par();//读取设备参数
//u5_printf("Bc25_Ip:%s\r\n",Init_Data_Equipment.Bc25_Ip);
// u5_printf("Bc25_Port:%s\r\n",Init_Data_Equipment.Bc25_Port);
// u5_printf("ESP8266_AP_Ports:%s\r\n",Init_Data_Equipment.ESP8266_AP_Ports);
// u5_printf("ESP8266_AP_PWDs:%s\r\n",Init_Data_Equipment.ESP8266_AP_PWDs);
// u5_printf("ESP8266_AP_SSIDs:%s\r\n",Init_Data_Equipment.ESP8266_AP_SSIDs);
// u5_printf("Measure_Interval:%s\r\n",Init_Data_Equipment.Measure_Interval);
// u5_printf("Pub_Mode:%s\r\n",Init_Data_Equipment.Pub_Mode);
// u5_printf("Pub_Time:%s\r\n",Init_Data_Equipment.Pub_Time);
// u5_printf("Equipment_ID:%s\r\n",Init_Data_Equipment.Equipment_ID);
// u5_printf("appointment_time:%s\r\n",Init_Data_Equipment.appointment_time);
// u5_printf("measure_mode:%s\r\n",Init_Data_Equipment.measure_mode);
EEPROM_ReadBytes(140,&Par_store_flag,1);//设备是否已经存储了参数 1存储 0无参数
// u5_printf("Par_store_flag:%d\r\n",Par_store_flag);
// u5_printf("read Init_Data_Equipment end!!!!!\r\n");
}
if(STB_ITStatusS==Power_ON)
{
BC25_Status.cpin=1;
MYRTC_Init();
get_show_time();
SetRTC(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);
//BC25_time_RTC();//BC25进行校时
EEPROM_WriteBytes(170,(u8*)"20",2);
BC25_POWEROFF();
//SetRTC(22,11,30,14,15,0);
//delay_ms(500);
GetRTC(hhmmsss,yymmddd);
// u5_printf("RTC is:%s %s\r\n", yymmddd,hhmmsss);
delay_ms(3000);
PWR_CTRLTFWF_L;
}
else
{
rtc_std_init();
}
//u5_printf("start_way is :%d\r\n",STB_ITStatusS);
GetRTC(hhmmsss,yymmddd);
//u5_printf("RTC is:%s %s\r\n", yymmddd,hhmmsss);
__nop();
//total_flag=exf_getfree("0",total_s, free_s);
}
/***************************** END OF FILE *********************************/