| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- #include "bsp.h"
- #include "includes.h"
- MqttIdPort mqttidport;
- //////////////////////////////////////////////////////////////////////////////////////
- sequeue_t *uart0_rx_sq;
- sequeue_t *uart3_rx_sq;
- FirmwareMsg g_firmwareMsg; // 网关 采集器固件信息存储
- /*!
- * \brief 创建串口接收队列
- * \param 无
- */
- void creat_uart_queue(void)
- {
- uart0_rx_sq = Create_Empty_Sequeue(5,256);
- // if(uart0_rx_sq==NULL)
- // printf("error,usart0_rx_sq\r\n");
- // else
- // printf("success,usart0_rx_sq\r\n");
-
- uart3_rx_sq = Create_Empty_Sequeue(5,256);
- // if(uart3_rx_sq==NULL)
- // printf("error,usart3_rx_sq\r\n");
- // else
- // printf("success,usart3_rx_sq\r\n");
- }
- //读取UUID
- void get_mcu_uuid(void)
- {
- uint32_t mcuID[3];
- mcuID[0] = *(volatile uint32_t*)(GD32F10X_ID_ADDR);
- mcuID[1] = *(volatile uint32_t*)(GD32F10X_ID_ADDR+4);
- mcuID[2] = *(volatile uint32_t*)(GD32F10X_ID_ADDR+8);
- memcpy(g_firmwareMsg.gatewayMsg.Uuid,(uint8_t *)mcuID,12);
- }
- //读mcu的类型
- void get_mcu_TypeIdcode(void)
- {
- uint32_t mcutypeID=0;
- mcutypeID = *(volatile uint32_t*)(GD32F10X_TYPE_ADDR);
- g_firmwareMsg.gatewayMsg.devicTypeID = (uint16_t)(mcutypeID&0xFFFF);
- }
- /*------------------------------------------------
- * 清空EEPROM的存储空间
- * ------------------------------------------------*/
- void fram_init(void)
- {
- uint8_t buff[64] = {0};
- int i = 0;
- memset(buff,0,sizeof(buff));
- for(i=0;i<256;i++){
- AT24CXX_Write(i*64,buff,sizeof(buff));
- fwdgt_counter_reload();//喂狗
- }
- // fram_write_eeprom_powerUpFlag();
- }
- /*----------------------------------------------
- * 是否第一次上电 的写入
- * ---------------------------------------------*/
- void fram_write_eeprom_powerUpFlag(void)
- {
- uint16_t version = 0x5A5A;
- AT24CXX_Write(FRAM_FIRST_POWER_ON,(uint8_t*)&version,sizeof(uint16_t));
- }
- /*----------------------------------------------
- * 是否第一次上电 读取
- * ---------------------------------------------*/
- uint16_t fram_read_eeprom_powerUpFlag(void)
- {
- uint16_t version = 0;
- AT24CXX_Read(FRAM_FIRST_POWER_ON,(uint8_t*)&version,sizeof(uint16_t));
- return version;
- }
- /*----------------------------------------------
- * EEPROM 版本号的写入
- * ---------------------------------------------*/
- void fram_write_eeprom_version(void)
- {
- uint8_t version = 0x01;
- AT24CXX_Write(FRAM_VERSION,&version,1);
- }
- /*----------------------------------------------
- * EEPROM 版本号的读取
- * ---------------------------------------------*/
- uint8_t fram_read_eeprom_version(void)
- {
- uint8_t version = 0;
- AT24CXX_Read(FRAM_VERSION,&version,1);
- return version;
- }
- /*-------------------------------------------------
- * mqqtt ip prot的初始化
- * ----------------------------------------------------*/
- void fram_init_mqtt_msg(void)
- {
- MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
- mqttMsg->flag = 0;
- memset(mqttMsg,0,sizeof(MqttIdPort));
- AT24CXX_Write(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
- }
- /*-------------------------------------------------
- * mqqtt ip prot的写 入
- * ----------------------------------------------------*/
- void fram_write_mqtt_msg(void)
- {
- MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
- AT24CXX_Write(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
- }
- /*-------------------------------------------------
- * mqqtt ip prot的读取
- * ----------------------------------------------------*/
- void fram_read_mqtt_msg(void)
- {
- MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
- memset(&(g_firmwareMsg.mqttidport),0,sizeof(MqttIdPort));
- AT24CXX_Read(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
- mqttMsg->port[5] = 0;
- mqttMsg->ip[31] = 0;
- mqttMsg->admin[7] = 0;
- mqttMsg->password[15] = 0;
- }
- /*-----------------------------------------------
- * 网关的硬件信息读取
- * -----------------------------------------------*/
- void fram_read_hardware_msg(void)
- {
- GateHareWareMsg *msg = &(g_firmwareMsg.gatewayMsg.hardwareMsg);
- memset(&(g_firmwareMsg.gatewayMsg.hardwareMsg),0,sizeof(GateHareWareMsg));
- AT24CXX_Read(DEVICE_PUBLIC_INFO_ADDR,(uint8_t*)msg,sizeof(GateHareWareMsg));
- }
- /*-----------------------------------------------
- * 网关的硬件信息写入
- * -----------------------------------------------*/
- void fram_write_hardware_msg(void)
- {
- GateHareWareMsg *msg = &(g_firmwareMsg.gatewayMsg.hardwareMsg);
- AT24CXX_Write(DEVICE_PUBLIC_INFO_ADDR,(uint8_t*)msg,sizeof(GateHareWareMsg));
- }
- /*------------------------------------------------------
- * 产测软件版本的信息初始化
- * 固件信息格式 :DDDDFNNN:
- * DDDD(设备类型):0x0101:网关A 0x0102:网关B 0x0201:采集器1 0x0202:采集器2
- * F(固件类型):0x01:bootloader版本 0x02:pt版本 0x03:app版本 0xF:合成版本
- * NNN:0x001 表示第1个版本 0x002:表示第2个版本
- * -----------------------------------------------------*/
- void fram_init_version(void)
- {
- fram_read_version();
- if(SOFTWARE_VERSION_PT !=g_firmwareMsg.gatewayMsg.verMsg.pt_version){
- g_firmwareMsg.gatewayMsg.verMsg.pt_version = SOFTWARE_VERSION_PT;
- fram_write_version();
- }
- }
- /*----------------------------------------------------
- * 网关 版本信息的读取
- * ---------------------------------------------------*/
- void fram_write_version(void)
- {
- GateVersionMsg *msg = NULL;
- msg = &(g_firmwareMsg.gatewayMsg.verMsg);
- AT24CXX_Write(DEVICE_VERSION_INFO_ADDR,(uint8_t*)msg,sizeof(GateVersionMsg));
- }
- /*----------------------------------------------------
- * 网关 版本信息的读取
- * ---------------------------------------------------*/
- void fram_read_version(void)
- {
- GateVersionMsg *msg = NULL;
- memset(&(g_firmwareMsg.gatewayMsg.verMsg),0,sizeof(GateVersionMsg));
- msg = &(g_firmwareMsg.gatewayMsg.verMsg);
- AT24CXX_Read(DEVICE_VERSION_INFO_ADDR,(uint8_t*)msg,sizeof(GateVersionMsg));
-
- // fram_init_version();
- }
- //////////////////////////////////////////////////////////////////////////////////////
|