2019-08-17 00:13发布
yklstudent 发表于 2017-7-12 17:56 楼主先把C语言玩熟玩透了
星光闪闪亮 发表于 2017-7-12 16:39 那最后一行这个定义什么意思 能翻译一下吗 谢谢
MrXiong 发表于 2017-7-12 10:59 #define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00)) 这个语 ...
最多设置5个标签!
这个语句是宏定义的一种,也就是6楼说的带参数的宏定义,意思很简单,普通的宏定义是#define TURE 1,上面的语句其实跟这句意思一样就是用TURE表示1,那么上面的语句的意思就是用IS_RCC_APB2_PERIPH(PERIPH) 代表
((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00)),两者的不同在于后者带了参数,后者也是一个带参数的函数,不难发现((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))这个是一个计算的公式一样的存在,值取决于参数的值。
#define RCC_APB2Periph_AFIO ((uint32_t)0x00000001)
#define RCC_APB2Periph_GPIOA ((uint32_t)0x00000004)
#define RCC_APB2Periph_GPIOB ((uint32_t)0x00000008)
#define RCC_APB2Periph_GPIOC ((uint32_t)0x00000010)
#define RCC_APB2Periph_GPIOD ((uint32_t)0x00000020)
#define RCC_APB2Periph_GPIOE ((uint32_t)0x00000040)
#define RCC_APB2Periph_GPIOF ((uint32_t)0x00000080)
#define RCC_APB2Periph_GPIOG ((uint32_t)0x00000100)
#define RCC_APB2Periph_ADC1 ((uint32_t)0x00000200)
#define RCC_APB2Periph_ADC2 ((uint32_t)0x00000400)
#define RCC_APB2Periph_TIM1 ((uint32_t)0x00000800)
#define RCC_APB2Periph_SPI1 ((uint32_t)0x00001000)
#define RCC_APB2Periph_TIM8 ((uint32_t)0x00002000)
#define RCC_APB2Periph_USART1 ((uint32_t)0x00004000)
#define RCC_APB2Periph_ADC3 ((uint32_t)0x00008000)
#define RCC_APB2Periph_TIM15 ((uint32_t)0x00010000)
#define RCC_APB2Periph_TIM16 ((uint32_t)0x00020000)
#define RCC_APB2Periph_TIM17 ((uint32_t)0x00040000)
#define RCC_APB2Periph_TIM9 ((uint32_t)0x00080000)
#define RCC_APB2Periph_TIM10 ((uint32_t)0x00100000)
#define RCC_APB2Periph_TIM11 ((uint32_t)0x00200000)
#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))
C语言确实不行 现在只能用一点学一点 要是懂的话 给指点一下可以吗?
带参数的宏定义,
恩恩 大概意思我懂了 谢谢 那再麻烦你一下,((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))这个类似公式的东西是想表达什么呢?
一周热门 更多>