日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ST17H26 SDK中宏定义注意事项

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ST17H26 SDK中宏定义注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

宏定義使用很方便,但 "##" 在宏中使用時可能導致宏定義在si工程中無法跟蹤,切記!

如下:

#pragma once


/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
extern "C" {
#endif


#define _USER_CONFIG_DEFINED_ ? 1 ? // must define this macro to make others known
#define __LOG_RT_ENABLE__ ? ? ? 0


product ?Information ?//
#define ID_VENDOR ? ? ? ? ? ? ? 0x248a ? ? ? ? ?// for report
#define ID_PRODUCT_BASE ? ? ? ? 0x880C
// If ID_PRODUCT left undefined, it will default to be combination of ID_PRODUCT_BASE and the USB config USB_SPEAKER_ENABLE/USB_MIC_ENABLE...
// #define ID_PRODUCT ? ? ? ? ? 0x8869


#define STRING_VENDOR ? ? ? ? ? L"Lenze"
#define STRING_PRODUCT ? ? ? ? ?L"BLE iSearching"
#define STRING_SERIAL ? ? ? ? ? L"17H26"


//#define CHIP_TYPE ? ? ? ? ? ?// ? CHIP_TYPE_17H26 ? ? ?//


#define FLOW_NO_OS ? ? ? ? ? ? ?1
#define RF_FAST_MODE_1M ? ? 1


/// Clock ?/
#define CLOCK_SYS_TYPE ? ? ? ? ?CLOCK_TYPE_PLL ?// ?one of the following: ?CLOCK_TYPE_PLL, CLOCK_TYPE_OSC, CLOCK_TYPE_PAD, CLOCK_TYPE_ADC
#define CLOCK_SYS_CLOCK_HZ ? ? ?32000000


//Extern Crystal Type///
#define CRYSTAL_TYPE XTAL_12M // ?extern 16M crystal


Moudule Enable ?
#define MODULE_ADC_ENABLE 0


#define LED_USE_PWM 0


/// IO Setting /
/*Device Name Selection GP4 and GP5*/
#define GPIO4_FUNC AS_GPIO
#define GPIO4_OUTPUT_ENABLE 0
#define GPIO4_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO4 PM_PIN_PULLDOWN_100K


#define GPIO5_FUNC AS_GPIO
#define GPIO5_OUTPUT_ENABLE 0
#define GPIO5_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO5 PM_PIN_PULLDOWN_100K


/*LED GP7*/
#if(LED_USE_PWM)
#define GPIO7_FUNC AS_PWM
#define GPIO7_OUTPUT_ENABLE 0
#define PULL_WAKEUP_SRC_GPIO7 PM_PIN_UP_DOWN_FLOAT
#else
#define GPIO7_FUNC AS_GPIO
#define GPIO7_OUTPUT_ENABLE 1
#define GPIO7_INPUT_ENABLE 0
#define PULL_WAKEUP_SRC_GPIO7 PM_PIN_UP_DOWN_FLOAT
#endif


/*Buzzer GP10*/
#define GPIO10_FUNC AS_PWM
#define GPIO10_OUTPUT_ENABLE 0
#define PULL_WAKEUP_SRC_GPIO7 PM_PIN_UP_DOWN_FLOAT


/*Button: BTN1-GP18 ?BTN2-GP17 BTN3-GP22*/
#define GPIO17_FUNC AS_GPIO
#define GPIO17_OUTPUT_ENABLE 0
#define GPIO17_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO17 PM_PIN_PULLDOWN_100K


#define GPIO18_FUNC AS_GPIO
#define GPIO18_OUTPUT_ENABLE 0
#define GPIO18_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO18 PM_PIN_PULLDOWN_100K


#define GPIO22_FUNC AS_GPIO
#define GPIO22_OUTPUT_ENABLE 0
#define GPIO22_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO22 PM_PIN_PULLDOWN_100K


/*Select Hardware_Switch Or Software_Switch*/
#define GPIO23_FUNC AS_GPIO
#define GPIO22_OUTPUT_ENABLE 0
#define GPIO22_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO22 PM_PIN_PULLUP_10K


#ifndef DEBUG_FROM_FLASH
#define DEBUG_FROM_FLASH 0
#endif


#if(DEBUG_FROM_FLASH) ? // firmware in flash (flash max size decided by flash type)
#define CFG_ADR_MAC ? 0xf000 // this address must be out of code space
#define CFG_FREQUENCY_OFFSET ? 0xf008 // this address must be out of code space


// gpio init , for compiler here


#else // firmware in otp(otp max size is (0x3fff - 20))


// gpio init , for compiler here
#define MSDO_INPUT_ENABLE 0
#define MSDI_INPUT_ENABLE 0
#define MCLK_INPUT_ENABLE 0
#define MSCN_INPUT_ENABLE 0
#endif


/// ?ADC ?/
#if(MODULE_ADC_ENABLE)


#define ADC_CHNM_ANA_INPUT ? ? ?ADC_CHN_GP18 ?//others parameters (ADC_CHN_GP17 ADC_CHN_GP18 ADC_CHN_GP22 ADC_CHN_GP23)
#define ADC_CHNM_REF_SRC ? ? ? ?ADC_REF_1P3V ?//others parameters (ADC_REF_1P3V ADC_REF_VDDH)


#endif




/// ?RAM&OTP Optimization ? ?/
/*Disable interrupt for 8263_remote application*/
#define ENABLE_INTERRUPT ?0


#if ENABLE_INTERRUPT ?
#define FLASH_OP_DISABLE_IRQ 1 /*1 Means flash operation needs to disable IRQ*/
#define ANALOG_OP_DISABLE_IRQ 1
#define KEYSCAN_OP_DISABLE_IRQ ? ? ? ? ? ? ? ? ? ? 1
#define RING_BUF_OP_DISABLE_IRQ ? ? ? ? ? ? ? ? ? 1
#define BLT_LL_OP_DISABLE_IRQ ? ? ? ? ? ? ? ? ? 1


#else
#define FLASH_OP_DISABLE_IRQ 0
#define ANALOG_OP_DISABLE_IRQ 0
#define KEYSCAN_OP_DISABLE_IRQ ? ? ? ? ? ? ? ? ? ? 0
#define RING_BUF_OP_DISABLE_IRQ ? ? ? ? ? ? ? ? ? 0
#define BLT_LL_OP_DISABLE_IRQ ? ? ? ? ? ? ? ? ? 0
#endif


/*Define low resource cost event call back functions*/
#define LOW_COST_EVENT_CB_MODE ? 1






/// ?RAMCODE ?optimize ?




/// set default ?


#include "../common/default_config.h"




/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)
}
#endif




#pragma once


#include "../common/types.h"
#include "../common/bit.h"
#include "../common/utility.h"
#include "../mcu/compiler.h"
#include "../mcu/register.h"
#include "gpio_default_17H26.h"


enum
{
GPIO_GROUP0 = 0x000,
GPIO_GROUP1 = 0x100,
GPIO_GROUP2 = 0x200,
GPIO_GROUP3 = 0x300,
GPIO_GROUP4 = 0x400,
GPIO_GROUP_MASK = 0x700,
};






enum
{
? ? GPIO_GP0 ?= 0x000 | BIT(0),
GPIO_GP1 ?= 0x000 | BIT(1),
GPIO_GP2 ?= 0x000 | BIT(2),
GPIO_GP3 ?= 0x000 | BIT(3),
GPIO_GP4 ?= 0x000 | BIT(4),
GPIO_GP5 ?= 0x000 | BIT(5),
GPIO_GP6 ?= 0x000 | BIT(6),
GPIO_GP7 ?= 0x000 | BIT(7),


GPIO_GP8 ?= 0x100 | BIT(0),
GPIO_GP9 ?= 0x100 | BIT(1),
GPIO_GP10 = 0x100 | BIT(2),
GPIO_GP11 = 0x100 | BIT(3),
GPIO_GP12 = 0x100 | BIT(4),
GPIO_GP13 = 0x100 | BIT(5),
GPIO_GP14 = 0x100 | BIT(6),
GPIO_GP15 = 0x100 | BIT(7),


GPIO_GP16 = 0x200 | BIT(0),
GPIO_GP17 = 0x200 | BIT(1),
GPIO_GP18 = 0x200 | BIT(2),
GPIO_GP19 = 0x200 | BIT(3),
GPIO_GP20 = 0x200 | BIT(4),
GPIO_GP21 = 0x200 | BIT(5),
GPIO_GP22 = 0x200 | BIT(6),
GPIO_GP23 = 0x200 | BIT(7),


GPIO_GP24 = 0x300 | BIT(0),
GPIO_GP25 = 0x300 | BIT(1),
GPIO_GP26 = 0x300 | BIT(2),
GPIO_GP27 = 0x300 | BIT(3),
GPIO_GP28 = 0x300 | BIT(4),
GPIO_GP29 = 0x300 | BIT(5),
GPIO_GP30 = 0x300 | BIT(6),
GPIO_GP31 = 0x300 | BIT(7),


GPIO_GP32 = 0x400 | BIT(0),
GPIO_MSCN = 0x400 | BIT(1),
GPIO_MCLK = 0x400 | BIT(2),
GPIO_MSDO = 0x400 | BIT(3),
GPIO_MSDI = 0x400 | BIT(4),
GPIO_SWS ?= 0x400 | BIT(5),


GPIO_PULLUPDN_COUNT = 33,
GPIO_MAX_COUNT = 38,
};






#define reg_gpio_in(i) REG_ADDR8(0x580+((i>>8)<<3))
#define reg_gpio_ie(i) REG_ADDR8(0x581+((i>>8)<<3))
#define reg_gpio_oen(i) REG_ADDR8(0x582+((i>>8)<<3))
#define reg_gpio_out(i) REG_ADDR8(0x583+((i>>8)<<3))
#define reg_gpio_pol(i) REG_ADDR8(0x584+((i>>8)<<3))
#define reg_gpio_ds(i) REG_ADDR8(0x585+((i>>8)<<3))
#define reg_gpio_gpio_func(i) REG_ADDR8(0x586+((i>>8)<<3))
#define reg_gpio_irq_en(i) REG_ADDR8(0x587+((i>>8)<<3))
#define reg_gpio_2risc0(i) REG_ADDR8(0x5a8+(i>>8))
#define reg_gpio_2risc1(i) REG_ADDR8(0x5b0+(i>>8))




static inline int gpio_is_output_en(u32 pin)
{
return !BM_IS_SET(reg_gpio_oen(pin), pin & 0xff);
}


static inline int gpio_is_input_en(u32 pin)
{
return BM_IS_SET(reg_gpio_ie(pin), pin & 0xff);
}


static inline void gpio_set_output_en(u32 pin, u32 value)
{
u8 bit = pin & 0xff;
if(!value)
{
BM_SET(reg_gpio_oen(pin), bit);
}
else
{
BM_CLR(reg_gpio_oen(pin), bit);
}
}


static inline void gpio_set_input_en(u32 pin, u32 value)
{
u8 bit = pin & 0xff;
if(value)
{
BM_SET(reg_gpio_ie(pin), bit);
}
else
{
BM_CLR(reg_gpio_ie(pin), bit);
}
}






static inline void gpio_set_data_strength(u32 pin, u32 value){
u8 bit = pin & 0xff;
if(value)
{
BM_SET(reg_gpio_ds(pin), bit);
}
else
{
BM_CLR(reg_gpio_ds(pin), bit);
}
}








static inline void gpio_en_interrupt(u32 pin)
{
u8 bit = pin & 0xff;
BM_SET(reg_gpio_irq_en(pin), bit);
}






static inline void gpio_set_interrupt(u32 pin, u32 falling)
{
u8 bit = pin & 0xff;
BM_SET(reg_gpio_irq_en(pin), bit);
if(falling)
{
BM_SET(reg_gpio_pol(pin), bit);
}
else
{
BM_CLR(reg_gpio_pol(pin), bit);
}
}




static inline void gpio_set_interrupt_pol(u32 pin, u32 falling)
{
u8 bit = pin & 0xff;
if(falling)
{
BM_SET(reg_gpio_pol(pin), bit);
}
else
{
BM_CLR(reg_gpio_pol(pin), bit);
}
}


static inline void gpio_clr_interrupt(u32 pin)
{
u8 bit = pin & 0xff;
BM_CLR(reg_gpio_irq_en(pin), bit);
}




static inline void gpio_write(u32 pin, u32 value)
{
u8 bit = pin & 0xff;
if(value)
{
BM_SET(reg_gpio_out(pin), bit);
}
else
{
BM_CLR(reg_gpio_out(pin), bit);
}
}


static inline u32 gpio_read(u32 pin)
{
return BM_IS_SET(reg_gpio_in(pin), pin & 0xff);
}


static inline u32 gpio_read_cache(u32 pin, u8 *p)
{
return p[pin>>8] & (pin & 0xff);
}


static inline void gpio_read_all(u8 *p)
{
p[0] = REG_ADDR8(0x580);
p[1] = REG_ADDR8(0x588);
p[2] = REG_ADDR8(0x590);
p[3] = REG_ADDR8(0x598);
p[4] = REG_ADDR8(0x5a0);
}


static inline void gpio_core_wakeup_enable_all (int en)
{
#if 0
if (en) {
BM_SET(reg_gpio_wakeup_en, FLD_GPIO_WAKEUP_EN);
}
else {
BM_CLR(reg_gpio_wakeup_en, FLD_GPIO_WAKEUP_EN);
}
#endif
}


//level = 1 : high wakeup
static inline void gpio_enable_wakeup_pin(u32 pin, u32 level, int en)
{
u8 bit = pin & 0xff;


if(level)
{
BM_CLR(reg_gpio_pol(pin), bit);
}
else
{
BM_SET(reg_gpio_pol(pin), bit);
}


if (en)?
{
BM_SET(reg_gpio_irq_en(pin), bit);
}
else?
{
BM_CLR(reg_gpio_irq_en(pin), bit);
}
}


/*******************************************************************************


*******************************************************************************/
#define GPIO_VALUE(type,pol,n) (GPIO##n##_##type==(pol)?(1<<(n&0x07)):0)
#define GPIO_FUNC_VALUE(type,pol,func,pos) (func##_##type==(pol)?(1<<pos):0)


#define GPIO_REG_VALUE_GROUP0(type,pol) \
?( ?GPIO_VALUE(type, pol , 0) | GPIO_VALUE(type, pol , 1) | \
GPIO_VALUE(type, pol , 2) | GPIO_VALUE(type, pol , 3) | \
GPIO_VALUE(type, pol , 4) | GPIO_VALUE(type, pol , 5) | \
GPIO_VALUE(type, pol , 6) | GPIO_VALUE(type, pol , 7) )


#define GPIO_REG_VALUE_GROUP1(type,pol) \
?( ?GPIO_VALUE(type, pol , 8) | GPIO_VALUE(type, pol , 9) | \
GPIO_VALUE(type, pol ,10) | GPIO_VALUE(type, pol ,11) | \
GPIO_VALUE(type, pol ,12) | GPIO_VALUE(type, pol ,13) | \
GPIO_VALUE(type, pol ,14) | GPIO_VALUE(type, pol ,15) )


#define GPIO_REG_VALUE_GROUP2(type,pol) \
?( ?GPIO_VALUE(type, pol ,16) | GPIO_VALUE(type, pol ,17) | \
GPIO_VALUE(type, pol ,18) | GPIO_VALUE(type, pol ,19) | \
GPIO_VALUE(type, pol ,20) | GPIO_VALUE(type, pol ,21) | \
GPIO_VALUE(type, pol ,22) | GPIO_VALUE(type, pol ,23) )


#define GPIO_REG_VALUE_GROUP3(type,pol) \
?( ?GPIO_VALUE(type, pol ,24) | GPIO_VALUE(type, pol ,25) | \
GPIO_VALUE(type, pol ,26) | GPIO_VALUE(type, pol ,27) | \
GPIO_VALUE(type, pol ,28) | GPIO_VALUE(type, pol ,29) | \
GPIO_VALUE(type, pol ,30) | GPIO_VALUE(type, pol ,31) )


#define GPIO_REG_VALUE_GROUP4(type,pol) \
?( ?GPIO_VALUE(type, pol ,32) ? | GPIO_FUNC_VALUE(type, pol ,MSCN,1) | \
GPIO_FUNC_VALUE(type, pol ,MCLK,2) | GPIO_FUNC_VALUE(type, pol ,MSDO,3) | \
GPIO_FUNC_VALUE(type, pol ,MSDI,4) | GPIO_FUNC_VALUE(type, pol ,SWS, 5) )




static inline void gpio_init(void)
{
reg_gpio_group0_ie = (u8)GPIO_REG_VALUE_GROUP0(INPUT_ENABLE,1);
reg_gpio_group0_oen ?= (u8)GPIO_REG_VALUE_GROUP0(OUTPUT_ENABLE,0);
reg_gpio_group0_out ?= (u8)GPIO_REG_VALUE_GROUP0(DATA_OUT,1);
reg_gpio_group0_ds = (u8)GPIO_REG_VALUE_GROUP0(DATA_STRENGTH,1);
reg_gpio_group0_func = (u8)GPIO_REG_VALUE_GROUP0(FUNC,0);


reg_gpio_group1_ie = (u8)GPIO_REG_VALUE_GROUP1(INPUT_ENABLE,1);
reg_gpio_group1_oen ?= (u8)GPIO_REG_VALUE_GROUP1(OUTPUT_ENABLE,0);
reg_gpio_group1_out ?= (u8)GPIO_REG_VALUE_GROUP1(DATA_OUT,1);
reg_gpio_group1_ds = (u8)GPIO_REG_VALUE_GROUP1(DATA_STRENGTH,1);
reg_gpio_group1_func = (u8)GPIO_REG_VALUE_GROUP1(FUNC,0);


reg_gpio_group2_ie = (u8)GPIO_REG_VALUE_GROUP2(INPUT_ENABLE,1);
reg_gpio_group2_oen ?= (u8)GPIO_REG_VALUE_GROUP2(OUTPUT_ENABLE,0);
reg_gpio_group2_out ?= (u8)GPIO_REG_VALUE_GROUP2(DATA_OUT,1);
reg_gpio_group2_ds = (u8)GPIO_REG_VALUE_GROUP2(DATA_STRENGTH,1);
reg_gpio_group2_func = (u8)GPIO_REG_VALUE_GROUP2(FUNC,0);


reg_gpio_group3_ie = (u8)GPIO_REG_VALUE_GROUP3(INPUT_ENABLE,1);
reg_gpio_group3_oen ?= (u8)GPIO_REG_VALUE_GROUP3(OUTPUT_ENABLE,0);
reg_gpio_group3_out ?= (u8)GPIO_REG_VALUE_GROUP3(DATA_OUT,1);
reg_gpio_group3_ds = (u8)GPIO_REG_VALUE_GROUP3(DATA_STRENGTH,1);


reg_gpio_group4_ie = (u8)GPIO_REG_VALUE_GROUP4(INPUT_ENABLE,1);
reg_gpio_group4_oen ?= (u8)GPIO_REG_VALUE_GROUP4(OUTPUT_ENABLE,0);
reg_gpio_group4_out ?= (u8)GPIO_REG_VALUE_GROUP4(DATA_OUT,1);
reg_gpio_group4_ds = (u8)GPIO_REG_VALUE_GROUP4(DATA_STRENGTH,1);
reg_gpio_group4_func = (u8)GPIO_REG_VALUE_GROUP4(FUNC,0);


analog_write (0x08, ?PULL_WAKEUP_SRC_GPIO17 |
(PULL_WAKEUP_SRC_GPIO18<<2) |
(PULL_WAKEUP_SRC_GPIO19<<4) |
(PULL_WAKEUP_SRC_GPIO20<<6));


analog_write (0x09, ?PULL_WAKEUP_SRC_GPIO21 |
(PULL_WAKEUP_SRC_GPIO22<<2) |
(PULL_WAKEUP_SRC_GPIO23<<4) |
(PULL_WAKEUP_SRC_GPIO24<<6));


analog_write (0x28, ?(PULL_WAKEUP_SRC_GPIO32==PM_PIN_PULLDOWN_100K) |
((PULL_WAKEUP_SRC_GPIO0==PM_PIN_PULLDOWN_100K)<<1) |
((PULL_WAKEUP_SRC_GPIO1==PM_PIN_PULLDOWN_100K)<<2) |
((PULL_WAKEUP_SRC_GPIO2==PM_PIN_PULLDOWN_100K)<<3) |
((PULL_WAKEUP_SRC_GPIO3==PM_PIN_PULLDOWN_100K)<<4) |
((PULL_WAKEUP_SRC_GPIO4==PM_PIN_PULLDOWN_100K)<<5) |
((PULL_WAKEUP_SRC_GPIO5==PM_PIN_PULLDOWN_100K)<<6) |
((PULL_WAKEUP_SRC_GPIO6==PM_PIN_PULLDOWN_100K)<<7));


analog_write (0x29, ?(PULL_WAKEUP_SRC_GPIO7==PM_PIN_PULLDOWN_100K) |
((PULL_WAKEUP_SRC_GPIO8==PM_PIN_PULLDOWN_100K)<<1) ?|
((PULL_WAKEUP_SRC_GPIO9==PM_PIN_PULLDOWN_100K)<<2) ?|
((PULL_WAKEUP_SRC_GPIO10==PM_PIN_PULLDOWN_100K)<<3) |
((PULL_WAKEUP_SRC_GPIO11==PM_PIN_PULLDOWN_100K)<<4) |
((PULL_WAKEUP_SRC_GPIO12==PM_PIN_PULLDOWN_100K)<<5) |
((PULL_WAKEUP_SRC_GPIO13==PM_PIN_PULLDOWN_100K)<<6) |
((PULL_WAKEUP_SRC_GPIO14==PM_PIN_PULLDOWN_100K)<<7));


analog_write (0x2a, ?(PULL_WAKEUP_SRC_GPIO15==PM_PIN_PULLDOWN_100K) |
((PULL_WAKEUP_SRC_GPIO16==PM_PIN_PULLDOWN_100K)<<1) |
(PULL_WAKEUP_SRC_GPIO26<<2) |
(PULL_WAKEUP_SRC_GPIO27<<4) |
(PULL_WAKEUP_SRC_GPIO31<<6));






? ? #if (__BLE__DEBUG_GPIO__)
/* Set DEBUG GPIO functions as output gpio*/
BM_SET(reg_gpio_gpio_func(DBG_PIN0), DBG_PIN0 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN1), DBG_PIN1 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN2), DBG_PIN2 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN3), DBG_PIN3 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN4), DBG_PIN4 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN5), DBG_PIN5 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN6), DBG_PIN6 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN7), DBG_PIN7 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN8), DBG_PIN8 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN9), DBG_PIN9 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN10), DBG_PIN10 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN11), DBG_PIN11 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN12), DBG_PIN12 & 0xff);
BM_SET(reg_gpio_gpio_func(DBG_PIN13), DBG_PIN13 & 0xff);






gpio_set_input_en(DBG_PIN0, 0);
gpio_set_input_en(DBG_PIN1, 0);
gpio_set_input_en(DBG_PIN2, 0);
gpio_set_input_en(DBG_PIN3, 0);
gpio_set_input_en(DBG_PIN4, 0);
gpio_set_input_en(DBG_PIN5, 0);
gpio_set_input_en(DBG_PIN6, 0);
gpio_set_input_en(DBG_PIN7, 0);
gpio_set_input_en(DBG_PIN8, 0);
gpio_set_input_en(DBG_PIN9, 0);
gpio_set_input_en(DBG_PIN10, 0);
gpio_set_input_en(DBG_PIN11, 0);
gpio_set_input_en(DBG_PIN12, 0);
gpio_set_input_en(DBG_PIN13, 0);




gpio_set_output_en(DBG_PIN0, 1);
gpio_set_output_en(DBG_PIN1, 1);
gpio_set_output_en(DBG_PIN2, 1);
gpio_set_output_en(DBG_PIN3, 1);
gpio_set_output_en(DBG_PIN4, 1);
gpio_set_output_en(DBG_PIN5, 1);
gpio_set_output_en(DBG_PIN6, 1);
gpio_set_output_en(DBG_PIN7, 1);
gpio_set_output_en(DBG_PIN8, 1);
gpio_set_output_en(DBG_PIN9, 1);
gpio_set_output_en(DBG_PIN10, 1);
gpio_set_output_en(DBG_PIN11, 1);
gpio_set_output_en(DBG_PIN12, 1);
gpio_set_output_en(DBG_PIN13, 1);
#endif
}




static inline void gpio_set_func(u32 pin, u32 func)
{
u8 bit = pin & 0xff;
if(func == AS_GPIO)
{
BM_SET(reg_gpio_gpio_func(pin), bit);
return;
}
else
{
BM_CLR(reg_gpio_gpio_func(pin), bit);
}


}


#if (__BLE__DEBUG_GPIO__)
#define BLE_DBG_GPIO_WRITE(pin, v) ? ? ?do{ if(pin){gpio_write(pin, v);}}while(0);
#else
#define BLE_DBG_GPIO_WRITE(pin, v)
#endif


extern void gpio_setup_up_down_resistor(u32 gpio, u32 up_down);












#define GPIO_VALUE(type,pol,n) (GPIO##n##_##type==(pol)?(1<<(n&0x07)):0)
#define GPIO_FUNC_VALUE(type,pol,func,pos) (func##_##type==(pol)?(1<<pos):0)


#define GPIO_REG_VALUE_GROUP0(type,pol) \
?( ?GPIO_VALUE(type, pol , 0) | GPIO_VALUE(type, pol , 1) | \
GPIO_VALUE(type, pol , 2) | GPIO_VALUE(type, pol , 3) | \
GPIO_VALUE(type, pol , 4) | GPIO_VALUE(type, pol , 5) | \
GPIO_VALUE(type, pol , 6) | GPIO_VALUE(type, pol , 7) )


#define GPIO_REG_VALUE_GROUP1(type,pol) \
?( ?GPIO_VALUE(type, pol , 8) | GPIO_VALUE(type, pol , 9) | \
GPIO_VALUE(type, pol ,10) | GPIO_VALUE(type, pol ,11) | \
GPIO_VALUE(type, pol ,12) | GPIO_VALUE(type, pol ,13) | \
GPIO_VALUE(type, pol ,14) | GPIO_VALUE(type, pol ,15) )


#define GPIO_REG_VALUE_GROUP2(type,pol) \
?( ?GPIO_VALUE(type, pol ,16) | GPIO_VALUE(type, pol ,17) | \
GPIO_VALUE(type, pol ,18) | GPIO_VALUE(type, pol ,19) | \
GPIO_VALUE(type, pol ,20) | GPIO_VALUE(type, pol ,21) | \
GPIO_VALUE(type, pol ,22) | GPIO_VALUE(type, pol ,23) )


#define GPIO_REG_VALUE_GROUP3(type,pol) \
?( ?GPIO_VALUE(type, pol ,24) | GPIO_VALUE(type, pol ,25) | \
GPIO_VALUE(type, pol ,26) | GPIO_VALUE(type, pol ,27) | \
GPIO_VALUE(type, pol ,28) | GPIO_VALUE(type, pol ,29) | \
GPIO_VALUE(type, pol ,30) | GPIO_VALUE(type, pol ,31) )


#define GPIO_REG_VALUE_GROUP4(type,pol) \
?( ?GPIO_VALUE(type, pol ,32)? ?? | GPIO_FUNC_VALUE(type, pol ,MSCN,1) | \
GPIO_FUNC_VALUE(type, pol ,MCLK,2) | GPIO_FUNC_VALUE(type, pol ,MSDO,3) | \
GPIO_FUNC_VALUE(type, pol ,MSDI,4) | GPIO_FUNC_VALUE(type, pol ,SWS, 5) )




static inline void gpio_init(void)
{
reg_gpio_group0_ie? ?= (u8)GPIO_REG_VALUE_GROUP0(INPUT_ENABLE,1);
reg_gpio_group0_oen ?= (u8)GPIO_REG_VALUE_GROUP0(OUTPUT_ENABLE,0);
reg_gpio_group0_out ?= (u8)GPIO_REG_VALUE_GROUP0(DATA_OUT,1);
reg_gpio_group0_ds? ?= (u8)GPIO_REG_VALUE_GROUP0(DATA_STRENGTH,1);
reg_gpio_group0_func = (u8)GPIO_REG_VALUE_GROUP0(FUNC,0);


reg_gpio_group1_ie? ?= (u8)GPIO_REG_VALUE_GROUP1(INPUT_ENABLE,1);
reg_gpio_group1_oen ?= (u8)GPIO_REG_VALUE_GROUP1(OUTPUT_ENABLE,0);
reg_gpio_group1_out ?= (u8)GPIO_REG_VALUE_GROUP1(DATA_OUT,1);
reg_gpio_group1_ds? ?= (u8)GPIO_REG_VALUE_GROUP1(DATA_STRENGTH,1);
reg_gpio_group1_func = (u8)GPIO_REG_VALUE_GROUP1(FUNC,0);


reg_gpio_group2_ie? ?= (u8)GPIO_REG_VALUE_GROUP2(INPUT_ENABLE,1);
reg_gpio_group2_oen ?= (u8)GPIO_REG_VALUE_GROUP2(OUTPUT_ENABLE,0);
reg_gpio_group2_out ?= (u8)GPIO_REG_VALUE_GROUP2(DATA_OUT,1);
reg_gpio_group2_ds? ?= (u8)GPIO_REG_VALUE_GROUP2(DATA_STRENGTH,1);
reg_gpio_group2_func = (u8)GPIO_REG_VALUE_GROUP2(FUNC,0);


reg_gpio_group3_ie? ?= (u8)GPIO_REG_VALUE_GROUP3(INPUT_ENABLE,1);
reg_gpio_group3_oen ?= (u8)GPIO_REG_VALUE_GROUP3(OUTPUT_ENABLE,0);
reg_gpio_group3_out ?= (u8)GPIO_REG_VALUE_GROUP3(DATA_OUT,1);
reg_gpio_group3_ds? ?= (u8)GPIO_REG_VALUE_GROUP3(DATA_STRENGTH,1);


reg_gpio_group4_ie? ?= (u8)GPIO_REG_VALUE_GROUP4(INPUT_ENABLE,1);
reg_gpio_group4_oen ?= (u8)GPIO_REG_VALUE_GROUP4(OUTPUT_ENABLE,0);
reg_gpio_group4_out ?= (u8)GPIO_REG_VALUE_GROUP4(DATA_OUT,1);
reg_gpio_group4_ds? ?= (u8)GPIO_REG_VALUE_GROUP4(DATA_STRENGTH,1);
reg_gpio_group4_func = (u8)GPIO_REG_VALUE_GROUP4(FUNC,0);




#define GPIO4_FUNC AS_GPIO
#define GPIO4_OUTPUT_ENABLE 0
#define GPIO4_INPUT_ENABLE 1
#define PULL_WAKEUP_SRC_GPIO4 PM_PIN_PULLDOWN_100K


比如:GPIO4_OUTPUT_ENABLE ?其實在函數中使用了,但由于使用了##,導致si工程中搜索不到。



總結

以上是生活随笔為你收集整理的ST17H26 SDK中宏定义注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。