#define T3PSC2 0x80 和#define T3PSC2 (0x80 )有啥区别
时间: 2024-06-19 12:02:49 浏览: 15
在C语言中,#define用于定义一个宏,将一个标识符指定为一个常量或者一个表达式。两者的区别在于括号的使用。
#define T3PSC2 0x80表示将T3PSC2这个宏定义为十六进制数0x80,没有使用括号。
#define T3PSC2 (0x80 )表示将T3PSC2这个宏定义为十六进制数0x80,使用了括号。使用括号的好处是可以避免一些意外的错误,比如说宏定义中包含运算符时,括号能够保证运算的正确性。
总的来说,使用括号能够提高宏定义的可读性和可维护性。
相关问题
如何在bluedroid避免蓝牙两端同时发起AVDTP 的L2CAP连接
在 Bluedroid 中,可以通过设置 AVDT_CFG_CHECK_EVT_MASK 参数来避免蓝牙两端同时发起 AVDTP 的 L2CAP 连接。具体来说,可以设置该参数为 AVDT_CHAN_MEDIA_EVT_MASK,这样在建立媒体通道时,只会有一端发起 L2CAP 连接。这可以通过以下代码实现:
```
#define AVDT_CFG_CHECK_EVT_MASK AVDT_CHAN_MEDIA_EVT_MASK
avdt_cfg_t avdt_cfg = {
.p_ctrl_cb = &avdt_ctrl_cb,
.p_data_cb = &avdt_data_cb,
.num_seps = AVDT_NUM_SEPS,
.local_sep_info = avdt_local_sep_info,
.codec_cfg = avdt_local_codec_info,
.psc_mask = AVDT_PSC_MASK,
.role = AVDT_OPEN_INT,
.sec_mask = BTM_SEC_NONE,
.chk_cfg_evt_mask = AVDT_CFG_CHECK_EVT_MASK
};
```
设置完参数后,Bluedroid 就会自动处理 AVDTP 的 L2CAP 连接,从而避免了两端同时发起连接的问题。
#include "USART.h" #include "contral.h" #define P_ARR_MAX 50 #define Us_ARR_MAX 10 double VIN_DAS[4]; u16 pwm1_arr=1800,pwm1_psc=2,//pwm1初始arr psc 72000/2/1800=20khz pwm pwm2_arr=1800,pwm2_psc=2;//pwm2初始arr psc u16 pwm1_pluse,pwm2_pluse ; //pwm1/2占空比ccr寄存器值 float ku=21.68,ki=1.055; float UIn_ad,IIn_ad,Uo_ad,Ub_ad,Ib_ad,Ib; float Us0=0,Us=0,Uo=30,Uobase=30,p; int cnt=20,cnt_getUs=10; int flag1=0,flag2=0,i=P_ARR_MAX,flagPlus=0,flagMinus=0; float step=0.0; vu8 key=0; /*************电路初始化************/ void Init() { //1 pwm1 通过一个循环来进行滤波操作,然后根据滤波后的结果计算出 pwm1_pluse 的值 while(cnt>0) { adsfilter(0);adsfilter(1); UIn_ad=VIN_DAS[0]*ku; IIn_ad=VIN_DAS[1]*ki; Us0=IIn_ad*10+UIn_ad; cnt--; } pwm1_pluse=Us0/60.0*pwm1_arr; // TIM4_PWM_Init(pwm1_arr,pwm1_psc); // TIM_SetCompare1(TIM4,pwm1_pluse); //2 EN delay_ms(50); GPIO_SetBits(GPIOB,GPIO_Pin_15); delay_ms(50); //3 pwm2 cnt=20; while(cnt>0) { adsfilter(2); adsfilter(3); Uo_ad=VIN_DAS[2]*ku; Ub_ad=VIN_DAS[3]*ku; cnt--; } pwm2_pluse=Ub_ad/Uo_ad*pwm2_arr; TIM3_PWM_Init(pwm2_arr,pwm2_psc); TIM_SetCompare2(TIM3,pwm2_pluse); //4 EN delay_ms(50); GPIO_SetBits(GPIOB,GPIO_Pin_12); delay_ms(50); } /*************电路初始化************/ /*************采样*************/ void caiyang() { adsfilter(0);adsfilter(1);adsfilter(2); adsfilter(3); UIn_ad=VIN_DAS[0]*ku; UIn_ad=UIn_ad*0.9554+0.0127; IIn_ad=VIN_DAS[1]*ki; IIn_ad=IIn_ad*0.9906-0.0021; Uo_ad=VIN_DAS[2]*21.05; //Uo_ad=Uo_ad*0.9991+1.2882; Ub_ad=VIN_DAS[3]*21.15; Ub_ad=Ub_ad*0.859+1.8277; Ib_ad=Get_Adc(1)*(3.3/4096); Ib=(Ib_ad-1.39)/0.428+0.12; Us=IIn_ad*10+UIn_ad; Us=1.0084*Us-0.0239; }
这段代码主要实现了电路初始化和采样两个功能。在电路初始化的过程中,通过循环滤波操作来得到输入电压、输入电流和输出电压的值,并计算出 PWM1 和 PWM2 的占空比。在采样的过程中,通过 ADS 模块来获取输入电压、输入电流、输出电压和输出电流的值,并进行相应的滤波处理。其中,输入电压和输入电流经过处理后计算出了输入功率,输出电压和输出电流则计算出了输出功率。最终计算出的输入功率与输出功率之比即为转换效率。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)