You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

431 lines
14 KiB

////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2017, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file hard_config.h
/// @brief hard config include
/// @info FILE FOR HARDWARE SETUP AND SOFTWARE SETUP///FOR EXAMPLE: BAORD ,MCU,IDE
/// @info YOU CAN CHANGE OR ADD THE DEFINE IF YOU NEED
/// @info 整个嵌入式项目的入口 首先是确认电路板 然后确认cpu 芯片型号 然后确认编译器 之后是软件框架 最后是应用程序
/// @info bsp_CONFIG 为其他头文件的始祖 TYPE_BOARD_xx
///-------------------------------------------------------------------------
/// @version 1.1
/// @author CC
/// @date 20180308
/// @note
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#ifndef _BSP_CONFIG_H
#define _BSP_CONFIG_H
#include <INTRINS.H>
#include "../clib/Type.h"
#include "../clib/bit.h"
#include "../tpc/tpc_uart.h"
#include "../tpc/tpc_0d0a.h"
#include "../tpc/tpc_modbus.h"
//#define D_iic_inspect
#define D_open_save_f
//>>>>>>>>>>>>>>>>>>>>>>.BORAD TYPE
#define TYPE_BOARD_hhnew 16
#define TYPE_BOARD_st_sleep04_01 4
#define TYPE_BOARD_st_sleep03 5
#define TYPE_BOARD_SMMM_MB_VH032_0E 6
#define TYPE_BOARD_LPC17xx_ 8
#define TYPE_BOARD_STM32F_103ZET6_READBULL 1036
#define TYPE_BOARD_hh_CC_MD_VH05_anyriny_simple_m51 0x0551
#define TYPE_BOARD_hh_CC_MD_VH06_asMain_m6a7 0x6a7
#define TYPE_BOARD_TI26_MT01_M178 0x178 //会议计时器版v TI26_MT01-M178
#define TYPE_BOARD_stc5as32_WIFIBV01 532
#define TYPE_BOARD_SHC16LAXXQN32 1632 //SHC16LAXXQN32
#define TYPE_BOARD_PAPER6133_M0A6 0xa6 //打印机纸张传感
#define TYPE_BOARD_GSM_MAIN_V07 0xa7 //打印机运维板
#define TYPE_BOARD_GSM_MAIN_A9 0xa8
#define TYPE_BOARD_GSM_MAIN04_GM35 0xa9
#define TYPE_BOARD_GSM_MAIN04_GM35_M42 0xaa
#define TYPE_BOARD_GSM_PD04_mainD_M63 0xab
//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<.BORAD TYPE end
//>>>>>>>>>>>>>>>>>>>>>>MCU TYPE
#define TYPE_MCU_STC_8A 51
#define TYPE_MCU_STC_8F 52
#define TYPE_MCU_STC_8G 53
#define TYPE_MCU_SHC6601 66
#define TYPE_MCU_LPC17xx 3217
#define TYPE_MCU_STM32 3232
#define D_CPUfamily_8bits 8
#define D_CPUfamily_16bits 16
#define D_CPUfamily_32bits 32
//<<<<<<<<<<<<<<<<<<<<<<mcu TYPE end
//>>>>>>>>>>>>>>>>>>>>>>IDE TYPE
#define TYPE_IDE_KEIL 1
#define TYPE_IDE_MDK 2
#define TYPE_IDE_IAR 3
//<<<<<<<<<<<<<<<<<<<<<<IDE TYPE end
//>>>>>>>>>>>>>>>>>>>>>>.SysTimer TYPE
#define TYPE_JIFFIES_5MS 1
#define TYPE_JIFFIES_10MS 2
#define TYPE_JIFFIES_25MS 3
//<<<<<<<<<<<<<<<<<<<<<<<<<<<.SysTimer TYPE end
//>>>>>>>>>>>>>>>>>>>>>>.WDT TYPE
#define TYPE_WDT_DISABLE 1
#define TYPE_WDT_ENABLE 2
#define WDT_FEED() WDT_CONTR |= 0x10
//<<<<<<<<<<<<<<<<<<<<<<<<<<<.SysTimer TYPE end
//>>>>>>>>>>>>>>>>>>>>>>.ByteOrder TYPE
#define TYPE_MCU_BIGENDIAN 1
#define TYPE_MCU_LITENDIAN 2
//<<<<<<<<<<<<<<<<<<<<<<<<<<<.ByteOrder TYPE end
//>>>>>>>>>>>>>>>>>>>>>>BUADRATE & MainFre
#define SBIT_1 1 //1 stop bit
#define SBIT_2 2 //2 stop bit
#define BRT_115200 115200
#define BRT_19200 19200
#define BRT_9600 9600
#define BRT_4800 4800
#define BRT_SIM 900
#define MainFre_5M 0
#define MainFre_11M 1
#define MainFre_22M 2
#define MainFre_27M 3
#define MainFre_24M 4
#define MainFre_33M 5
//<<<<<<<<<<<<<<<<<<<<<<BUADRATE & MainFre end
//>>>>>>>>>>>>>>>>>>>>>>UART0 PIN
#define PIN_UART0_Rxd_30_Txd_31 1
#define PIN_UART0_Rxd_36_Txd_37 2
#define PIN_UART0_Rxd_16_Txd_17 3
#define PIN_UART0_Rxd_43_Txd_44 4
//<<<<<<<<<<<<<<<<<<<<<<<<<<<.UART0 PIN
//>>>>>>>>>>>>>>>>>>>>>>485 Type
#define TYPE_485_NONE 0
#define TYPE_485_MASTER 1
#define TYPE_485_SLAVER 2
//<<<<<<<<<<<<<<<<<<<<<<485 Type end
//>>>>>>>>>>>>>>>>>>>>>>G-SENSOR TYPE
#define TYPE_ASENSOR_ADXL362 362
#define TYPE_ASENSOR_MSA300 362
#define TYPE_ASENSOR TYPE_ASENSOR_MSA300
//<<<<<<<<<<<<<<<<<<<<<<G-SENSOR TYPE end
//STEP 1 TYPE_UASER_BOARD SELECT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define TYPE_UASER_BOARD TYPE_BOARD_GSM_PD04_mainD_M63 //打印机运维板
//#define TYPE_UASER_BOARD TYPE_BOARD_PAPER6133_M0A6 //会议计时器版v TI26_MT01-M178
//#define TYPE_UASER_BOARD TYPE_BOARD_SMMM_MB_VH032_0E
//#define TYPE_UASER_BOARD TYPE_BOARD_stc90c516rd
//#define TYPE_UASER_BOARD TYPE_BOARD_hh_CC_MD_VH06_asMain_m6a7
//#define TYPE_UASER_BOARD TYPE_BOARD_stc5as32_WIFIBV01
//#define TYPE_UASER_BOARD TYPE_BOARD_hhnew
//STEP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//STEP 2 TYPE_UASER_BOARD CONFIG >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#if(TYPE_UASER_BOARD == TYPE_BOARD_GSM_PD04_mainD_M63)
#include <stdio.h>
#include <string.h>
#include <intrins.h>
#include "../cpu/STC_stc8a8k.h"
#include "../cpu/c51_macro.h"
//基本配置(工作频率、时钟、看门狗、字节序)
#define TYPE_MCU TYPE_MCU_STC_8A
#define TYPE_IDE TYPE_IDE_KEIL
#define D_CPUfamily_type D_CPUfamily_8bits
#define D_sys_MainFre MainFre_11M
#define D_sys_Jiffies TYPE_JIFFIES_10MS
#define D_WDT_STATUS TYPE_WDT_ENABLE //如果配置为enable,请在bsp_config.c中设置wdt溢出时间
#define D_MCU_ENDIAN TYPE_MCU_BIGENDIAN
//串口配置
#define D_uart0_BRT BRT_115200
//延时配置
#if(MainFre_5M == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#elif(MainFre_22M == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#define L0_delay_1us() Lc_delay_nop(0) // 5个nop() 100ns 50个nop() 1us (20)=10us (2)1.5us
#define L0_delay_10us() Lc_delay_nop(4) // 5个nop() 100ns 50个nop() 1us (20)=10us (2)1.5us
#define L0_delay_40us() Lc_delay_nop(18) // 5个nop() 100ns 50个nop() 1us (20)=10us (2)1.5us
#elif(MainFre_27M == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#else ///MainFre_11M
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#define L0_delay_1us() Lc_delay_nop(0) // 5个nop() 100ns 50个nop() 1us (20)=10us (2)1.5us
#define L0_delay_10us() Lc_delay_nop(4) // 5个nop() 100ns 50个nop() 1us (20)=10us (2)1.5us
#define L0_delay_40us() Lc_delay_nop(18) // 5个nop() 100ns 50个nop() 1us (20)=10us (2)1.5us
//xx
#endif//D_sys_MainFre)
#elif(TYPE_UASER_BOARD == TYPE_BOARD_PAPER6133_M0A6)
#define TYPE_MCU TYPE_MCU_STC
#define TYPE_IDE TYPE_IDE_KEIL
#include <stdio.h>
#include <string.h>
#include <intrins.h>
#include "../cpu/STC_stc8a8k.h"
#include "../cpu/c51_macro.h"
#define D_CPUfamily_type D_CPUfamily_8bits
#define BRT_115200 115200
#define BRT_9600 9600
#define D_uart0_BRT BRT_115200
#define MainFre_5M 0
#define MainFre_11M 1
#define MainFre_22M 2
#define MainFre_27M 3
//#define D_sys_MainFre MainFre_16M2
#define D_sys_MainFre MainFre_11M
#if(MainFre_5M == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#elif(MainFre_22M == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#elif(MainFre_27M == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#else ///MainFre_11M
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#endif//D_sys_MainFre)
#elif(TYPE_UASER_BOARD == TYPE_BOARD_TI26_MT01_M178)
#define TYPE_MCU TYPE_MCU_STC
#define TYPE_IDE TYPE_IDE_KEIL
#include <stdio.h>
#include <string.h>
#include "../cpu/STC_stc8a8k.h"
#define D_CPUfamily_type D_CPUfamily_8bits
#elif(TYPE_UASER_BOARD == TYPE_BOARD_SMMM_MB_VH032_0E)
//Fix Me.
#elif(TYPE_UASER_BOARD == TYPE_BOARD_hh_CC_MD_VH06_asMain_m6a7)
#define TYPE_MCU TYPE_MCU_SHC6601
#define TYPE_IDE TYPE_IDE_KEIL
//typedef unsigned char type_comm;//通用类型的变量,取决于编译器和cpu的位数和系统的堆栈优化等
#include <stdio.h>
#include <string.h>
#include <intrins.h>
#define NOP() _nop_()
#define D_CPUfamily_type D_CPUfamily_8bits
typedef unsigned char type_comm;
#ifdef D_debug_sim
#define D_sim_uart
#define D_sim_timer0
#endif
//---------------------------------------------------
#define MainFre_2M2 0
#define MainFre_4M2 1
#define MainFre_8M2 2
#define MainFre_16M2 3
///#define D_sys_MainFre MainFre_16M2
#define D_sys_MainFre MainFre_4M2
///#define D_sys_MainFre MainFre_2M2
/// send+10000 = 100ms 10==1ms 1=200us
#if(MainFre_16M2 == D_sys_MainFre)
#define D_Cdelay_200us 9 //20us 20us*250 = 5000us 5ms
#define D_Cdelay_1us 1 ////while p21翻转时测定 1.74M 0.5us 一个指令
#elif (MainFre_8M2 == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#elif (MainFre_4M2 == D_sys_MainFre)
#define D_Cdelay_200us 20
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#elif (MainFre_2M2 == D_sys_MainFre)
#define D_Cdelay_200us 40
#define D_Cdelay_1us 1 ////while p21翻转时测定 500k 2us 一个指令
#endif
#define D_Tdelay_100ms (10)
#define D_Tdelay_200ms (20)
#define D_Tdelay_400ms (65534)
#define D_Cdelay_400us (2*D_Cdelay_200us+3)
#define D_Cdelay_1ms (5*D_Cdelay_200us)
#define D_Cdelay_1ms2 (6*D_Cdelay_200us+7+1)
#define D_Cdelay_5ms (254+16)
/// 对应task中的n v 最大值255
//// 如果main循环耗时 20us 那么//20us 20us*250 = 5000us 5ms
//---------------------------------------------------
#include "../cpu/SHC16L.h"
#include "../cpu/shc16l_macro.h"
//SADEN1 串口从 机地址
//---------------------------------------------------
#define gReg_user2 SADEN1
#define gRegU_SO SADDR
#define gRegU_AppFlag CCAP0L // io口状态位
#define gRegU_iic_wr CCAP1L // iic 读写状态位
#define gRegU_iic_return CCAP2L ///// i2c模块任务调度状态,判定i2c模块是否空闲的标志
#define gRegU_CWreg CCAP3L
#define gRegU_SO3 CCAP3L
#define D_AppFlag_CWInt BITN0 /// CW 的中断app标志 区别于中断标志,一般用于保存中断标志
/// 因为中断标志大部分会在中断中自动或者程序清除,应用程序中看不到了
#define D_AppFlag_HotReset BITN1 /// 热启动的标志位
#define L2_AppFlag_init() gRegU_AppFlag = 0;
//---------------------------------------------------
///L2_AppFlag_CWInt_is(D_AppFlag_CWInt)
#define L2_AppFlag_CWInt_is(BITNx) BITN_G(gRegU_AppFlag, (BITNx))
#define L2_AppFlag_CWInt_set(BITNx) BITN_1(gRegU_AppFlag,(BITNx))
#define L2_AppFlag_CWInt_clear(BITNx) BITN_0(gRegU_AppFlag,(BITNx))
//---------------------------------------------------
#ifdef daosdifjasodfij
SHC16LAXXQN32
P30 SENSINT2 Gsensor.INT1
P31 SENSINT3 Gsensor.INT2
P21 buz
p20 PW_PG
P07 MOTO
P04 PW_IRQ
P51 txd
P50 rxd
P07 BAT_CAL
P06 BAT_CAL_EN
P05 VCIN0
P04 PW_IRQ
P27 LED1
P26 LED12
P25 LED82
P24 LED8
P23 LED5
P22 LED51
P10 SCL
p11 SDA
typedef enum MainFreSelect
{
MainFre_2M,
MainFre_4M,
MainFre_8M,
MainFre_16M,
MainFre_Max
}MainFreSelect;
#endif
#define D_MainFre 1 //MainFre_4M
typedef U16 UN_TYPE;
#elif(TYPE_UASER_BOARD == TYPE_BOARD_hhnew)
#include "../cpu/SHC16L_macro.h"
#define TYPE_MCU TYPE_MCU_SHC6601
#define TYPE_IDE TYPE_IDE_KEIL
typedef unsigned short type_comm;//通用类型的变量,取决于编译器和cpu的位数和系统的堆栈优化等
#elif(TYPE_UASER_BOARD == TYPE_BOARD_LPC17xx_)
#define TYPE_MCU TYPE_MCU_LPC17xx
#define TYPE_IDE TYPE_IDE_MDK
// typedef unsigned int type_comm;//通用类型的变量,取决于编译器和cpu的位数和系统的堆栈优化等
#include "lpc17xxcc.h"
#include "lpc17xxzlg.h"
#include "lpc17xx_macro.h"
#include "target_cfg.h"
#elif(TYPE_UASER_BOARD == TYPE_BOARD_STM32F_103ZET6_READBULL)
#define TYPE_MCU TYPE_MCU_STM32
#define TYPE_IDE TYPE_IDE_MDK
// typedef unsigned int type_comm;//通用类型的变量,取决于编译器和cpu的位数和系统的堆栈优化等
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32_macro.h"
#endif //TYPE_UASER_BOARD == TYPE_BOARD_GSM_MAIN_V07
//externs
struct _s_sysclk
{
U32 m;
U32 clk;
U32 out;
};
extern struct _s_sysclk s_sysclk;
#define P3130 0 //uart0
#define P3736 1
#define P1110 2 //uart2
#define P5352 3 //uart4
extern void L0_uart0_change(unsigned char ch);
extern void L0_uart2_change(unsigned char ch);
extern void L0_uart4_change(unsigned char ch);
extern void L1_bsp_func_init(void);
extern void L1_bsp_pwm_set(U16 val_H,U16 val_L);
extern void L1_bsp_pwm_init(void);
extern void L0_cpu_init(void);
extern void L0_MCLKO_init(void);
extern void L3_pwm_fun(U8 *pPara);
extern void L0_led2_set(unsigned char onf);
//---------- 串口协议配置---------------
#define D_s_uart0_rec_close(); s_uart0_rec.ok = 2;// 关闭串口协议解析
#define D_s_uart0_rec_open(); s_uart0_rec.ok = 0;// 关闭串口协议解析
extern void (*Lp0_uart0_fun)(unsigned char sbufreg);
extern void (*Lp0_uart2_fun)(unsigned char sbufreg);
extern void (*Lp0_uart3_fun)(unsigned char sbufreg);
extern void (*Lp0_uart4_fun)(unsigned char sbufreg);
extern TS_Handle_PH3 s_uart0_rec;
extern TS_Handle_PH4 s_uart2_rec;
extern TS_Handle_0d0a s_uart4_at_rec;
extern TS_Handle_PH3 s_uart4_tcp_rec;
extern void L1_bsp_uart_config(void);
#endif//_BSP_CONFIG_H
/*********************************end file*********************************************/