mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-16 15:08:15 +08:00
修改了Web后台的部分界面,增加了HAmqtt中的总电量传感器,后台新增mqtt上报频率设置
This commit is contained in:
386
mico-os/board/MK3297/platform.c
Normal file
386
mico-os/board/MK3297/platform.c
Normal file
@@ -0,0 +1,386 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file platform.c
|
||||
* @author William Xu
|
||||
* @version V1.0.0
|
||||
* @date 05-May-2014
|
||||
* @brief This file provides all MICO Peripherals mapping table and platform
|
||||
* specific functions.
|
||||
******************************************************************************
|
||||
*
|
||||
* The MIT License
|
||||
* Copyright (c) 2014 MXCHIP Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is furnished
|
||||
* to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "mico_platform.h"
|
||||
#include "platform.h"
|
||||
#include "platform_config.h"
|
||||
#include "platform_peripheral.h"
|
||||
#include "platform_config.h"
|
||||
#include "platform_logging.h"
|
||||
#include "CheckSumUtils.h"
|
||||
#include "keypad/gpio_button/button.h"
|
||||
|
||||
#ifdef USE_MiCOKit_EXT
|
||||
#include "MiCOKit_EXT/micokit_ext.h"
|
||||
#endif
|
||||
|
||||
/******************************************************
|
||||
* Macros
|
||||
******************************************************/
|
||||
|
||||
/******************************************************
|
||||
* Constants
|
||||
******************************************************/
|
||||
|
||||
/******************************************************
|
||||
* Enumerations
|
||||
******************************************************/
|
||||
|
||||
/******************************************************
|
||||
* Type Definitions
|
||||
******************************************************/
|
||||
|
||||
/******************************************************
|
||||
* Structures
|
||||
******************************************************/
|
||||
|
||||
/******************************************************
|
||||
* Function Declarations
|
||||
******************************************************/
|
||||
extern WEAK void PlatformEasyLinkButtonClickedCallback(void);
|
||||
extern WEAK void PlatformEasyLinkButtonLongPressedCallback(void);
|
||||
extern WEAK void bootloader_start(void);
|
||||
|
||||
/******************************************************
|
||||
* Variables Definitions
|
||||
******************************************************/
|
||||
|
||||
const platform_gpio_t platform_gpio_pins[] =
|
||||
{
|
||||
/* Common GPIOs for internal use */
|
||||
[MICO_SYS_LED ] = {HAL_GPIO_38},
|
||||
[MICO_RF_LED ] = {HAL_GPIO_35},
|
||||
[BOOT_SEL ] = {HAL_GPIO_34},
|
||||
[MFG_SEL ] = {HAL_GPIO_33},
|
||||
[EasyLink_BUTTON] = {HAL_GPIO_6 },
|
||||
[STDIO_UART_RX ] = {HAL_GPIO_36},
|
||||
[STDIO_UART_TX ] = {HAL_GPIO_37},
|
||||
/* GPIOs for external use */
|
||||
[MICO_GPIO_59] = {HAL_GPIO_59}, //01,SWDIO
|
||||
[MICO_GPIO_60] = {HAL_GPIO_60}, //02,SWCLK
|
||||
[MICO_GPIO_39] = {HAL_GPIO_39}, //23
|
||||
[MICO_GPIO_0 ] = {HAL_GPIO_0 }, //07,UART0_RST
|
||||
[MICO_GPIO_32] = {HAL_GPIO_32}, //12,SPI_CS
|
||||
[MICO_GPIO_30] = {HAL_GPIO_30}, //13,SPI_MISO
|
||||
[MICO_GPIO_29] = {HAL_GPIO_29}, //14,SPI_MOSI
|
||||
[MICO_GPIO_31] = {HAL_GPIO_31}, //15,SPI_CLK
|
||||
[MICO_GPIO_35] = {HAL_GPIO_35}, //18
|
||||
[MICO_GPIO_57] = {HAL_GPIO_57}, //B1,ADC_IN0
|
||||
[MICO_GPIO_58] = {HAL_GPIO_58}, //B2,ADC_IN1
|
||||
[MICO_GPIO_27] = {HAL_GPIO_27}, //20,I2C_SCL
|
||||
[MICO_GPIO_28] = {HAL_GPIO_28}, //19,I2C_SDA
|
||||
|
||||
[MICO_GPIO_2 ] = {HAL_GPIO_2 }, //10,UART2_RX
|
||||
[MICO_GPIO_3 ] = {HAL_GPIO_3 }, //09,UART2_TX
|
||||
};
|
||||
|
||||
const platform_i2c_t platform_i2c_peripherals[] =
|
||||
{
|
||||
[MICO_I2C_1] =
|
||||
{
|
||||
},
|
||||
};
|
||||
|
||||
platform_i2c_driver_t platform_i2c_drivers[MICO_I2C_MAX];
|
||||
|
||||
const platform_uart_t platform_uart_peripherals[] =
|
||||
{
|
||||
[MICO_UART_1] =
|
||||
{
|
||||
.port = HAL_UART_1,
|
||||
},
|
||||
[MICO_UART_2] =
|
||||
{
|
||||
.port = HAL_UART_0,
|
||||
},
|
||||
};
|
||||
platform_uart_driver_t platform_uart_drivers[MICO_UART_MAX];
|
||||
|
||||
const platform_spi_t platform_spi_peripherals[] =
|
||||
{
|
||||
[ MICO_SPI_1 ] =
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
platform_spi_driver_t platform_spi_drivers[MICO_SPI_MAX];
|
||||
|
||||
const platform_adc_t platform_adc_peripherals[] =
|
||||
{
|
||||
[ MICO_ADC_1 ] =
|
||||
{
|
||||
HAL_ADC_CHANNEL_0
|
||||
},
|
||||
[ MICO_ADC_2 ] =
|
||||
{
|
||||
HAL_ADC_CHANNEL_1
|
||||
},
|
||||
};
|
||||
|
||||
const platform_pwm_t platform_pwm_peripherals[] =
|
||||
{
|
||||
[MICO_PWM_1] =
|
||||
{
|
||||
},
|
||||
};
|
||||
|
||||
/* Flash memory devices */
|
||||
const platform_flash_t platform_flash_peripherals[] =
|
||||
{
|
||||
[MICO_FLASH_EMBEDDED] =
|
||||
{
|
||||
.flash_type = FLASH_TYPE_EMBEDDED,
|
||||
.flash_start_addr = 0x00,
|
||||
.flash_length = 0x400000,
|
||||
},
|
||||
};
|
||||
|
||||
platform_flash_driver_t platform_flash_drivers[MICO_FLASH_MAX];
|
||||
|
||||
/* Logic partition on flash devices */
|
||||
const mico_logic_partition_t mico_partitions[] =
|
||||
{
|
||||
[MICO_PARTITION_BOOTLOADER] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "Bootloader",
|
||||
.partition_start_addr = 0x00,
|
||||
.partition_length = 0x8000, //32k bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_DIS,
|
||||
},
|
||||
[MICO_PARTITION_RF_FIRMWARE] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "RF Firmware",
|
||||
.partition_start_addr = 0x8000,
|
||||
.partition_length = 0x71000, //452k bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_DIS,
|
||||
},
|
||||
[MICO_PARTITION_ATE] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "ATE",
|
||||
.partition_start_addr = 0x79000,
|
||||
.partition_length = 0x55000, //340k bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
||||
},
|
||||
[MICO_PARTITION_APPLICATION] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "Application",
|
||||
.partition_start_addr = 0xCE000,
|
||||
.partition_length = 0x100000, //1M bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_DIS,
|
||||
},
|
||||
[MICO_PARTITION_OTA_TEMP] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "OTA Storage",
|
||||
.partition_start_addr = 0x1CE000,
|
||||
.partition_length = 0x100000, //1M bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
||||
},
|
||||
[MICO_PARTITION_PARAMETER_1] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "PARAMETER1",
|
||||
.partition_start_addr = 0x2CE000,
|
||||
.partition_length = 0x4000, //16k bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
||||
},
|
||||
[MICO_PARTITION_PARAMETER_2] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "PARAMETER1",
|
||||
.partition_start_addr = 0x2D2000,
|
||||
.partition_length = 0x4000, //16k bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
||||
},
|
||||
[MICO_PARTITION_FILESYS] =
|
||||
{
|
||||
.partition_owner = MICO_FLASH_EMBEDDED,
|
||||
.partition_description = "FILESYS",
|
||||
.partition_start_addr = 0x2D6000,
|
||||
.partition_length = 0x100000, //1M bytes
|
||||
.partition_options = PAR_OPT_READ_EN | PAR_OPT_WRITE_EN,
|
||||
}
|
||||
};
|
||||
|
||||
/******************************************************
|
||||
* Function Definitions
|
||||
******************************************************/
|
||||
|
||||
void platform_init_peripheral_irq_priorities(void)
|
||||
{
|
||||
}
|
||||
|
||||
void init_platform(void)
|
||||
{
|
||||
button_init_t init;
|
||||
|
||||
MicoGpioInitialize((mico_gpio_t) MICO_SYS_LED, OUTPUT_PUSH_PULL);
|
||||
MicoGpioOutputLow((mico_gpio_t) MICO_SYS_LED);
|
||||
MicoGpioInitialize((mico_gpio_t) MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL);
|
||||
MicoGpioOutputHigh((mico_gpio_t) MICO_RF_LED);
|
||||
|
||||
MicoGpioInitialize((mico_gpio_t) BOOT_SEL, INPUT_PULL_UP);
|
||||
MicoGpioInitialize((mico_gpio_t) MFG_SEL, INPUT_PULL_UP);
|
||||
|
||||
init.gpio = EasyLink_BUTTON;
|
||||
init.pressed_func = PlatformEasyLinkButtonClickedCallback;
|
||||
init.long_pressed_func = PlatformEasyLinkButtonLongPressedCallback;
|
||||
init.long_pressed_timeout = 5000;
|
||||
|
||||
button_init(IOBUTTON_EASYLINK, init);
|
||||
|
||||
#ifdef USE_MiCOKit_EXT
|
||||
dc_motor_init();
|
||||
dc_motor_set(0);
|
||||
|
||||
rgb_led_init();
|
||||
rgb_led_open(0, 0, 0);
|
||||
#endif
|
||||
|
||||
platform_rtc_init();
|
||||
|
||||
}
|
||||
|
||||
#ifdef BOOTLOADER
|
||||
|
||||
//#define BOOTLOADER_DEBUG
|
||||
|
||||
void init_platform_bootloader( void )
|
||||
{
|
||||
|
||||
MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL );
|
||||
MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED );
|
||||
MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_PUSH_PULL );
|
||||
MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED );
|
||||
|
||||
MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP);
|
||||
MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP);
|
||||
|
||||
#ifdef USE_MiCOKit_EXT
|
||||
dc_motor_init( );
|
||||
dc_motor_set( 0 );
|
||||
|
||||
rgb_led_init();
|
||||
rgb_led_open(0, 0, 0);
|
||||
#endif
|
||||
|
||||
#ifdef BOOTLOADER_DEBUG
|
||||
static const platform_uart_config_t bootloader_debug_uart_config =
|
||||
{ .baud_rate = 921600, .data_width = DATA_WIDTH_8BIT, .parity =
|
||||
NO_PARITY, .stop_bits = STOP_BITS_1, .flow_control =
|
||||
FLOW_CONTROL_DISABLED, .flags = 0,};
|
||||
platform_uart_init(&platform_uart_drivers[UART_FOR_APP],
|
||||
&platform_uart_peripherals[UART_FOR_APP], &bootloader_debug_uart_config, NULL);
|
||||
#endif /* #ifndef BOOTLOADER_DEBUG */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef BOOTLOADER_DEBUG
|
||||
#include <stdarg.h>
|
||||
int bootloader_log( const char *format, ... )
|
||||
{
|
||||
static uint8_t log_buf[1024];
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
int size = vsnprintf(log_buf, sizeof(log_buf) - 1, format, ap);
|
||||
va_end(ap);
|
||||
MicoUartSend(UART_FOR_APP, log_buf, size);
|
||||
return size;
|
||||
}
|
||||
#endif /* #ifndef BOOTLOADER_DEBUG */
|
||||
|
||||
#endif
|
||||
|
||||
void MicoSysLed(bool onoff)
|
||||
{
|
||||
if (onoff) {
|
||||
MicoGpioOutputLow((mico_gpio_t) MICO_SYS_LED);
|
||||
}
|
||||
else {
|
||||
MicoGpioOutputHigh((mico_gpio_t) MICO_SYS_LED);
|
||||
}
|
||||
}
|
||||
|
||||
void MicoRfLed(bool onoff)
|
||||
{
|
||||
if (onoff) {
|
||||
MicoGpioOutputLow((mico_gpio_t) MICO_RF_LED);
|
||||
}
|
||||
else {
|
||||
MicoGpioOutputHigh((mico_gpio_t) MICO_RF_LED);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_MiCOKit_EXT
|
||||
// add test mode for MiCOKit-EXT board,check Arduino_D5 pin when system startup
|
||||
bool MicoExtShouldEnterTestMode(void)
|
||||
{
|
||||
if ( MicoGpioInputGet((mico_gpio_t) Arduino_D5) == false) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool MicoShouldEnterMFGMode(void)
|
||||
{
|
||||
if (MicoGpioInputGet((mico_gpio_t) BOOT_SEL) == false
|
||||
&& MicoGpioInputGet((mico_gpio_t) MFG_SEL) == false)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MicoShouldEnterBootloader(void)
|
||||
{
|
||||
if (MicoGpioInputGet((mico_gpio_t) BOOT_SEL) == false
|
||||
&& MicoGpioInputGet((mico_gpio_t) MFG_SEL) == true)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MicoShouldEnterATEMode(void)
|
||||
{
|
||||
if (MicoGpioInputGet((mico_gpio_t) BOOT_SEL) == false
|
||||
&& MicoGpioInputGet((mico_gpio_t) EasyLink_BUTTON) == false)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user