stm32f103新手求助 问题也不知道怎么写,大家进来看一下把

2019-08-17 00:13发布

#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002)大家帮忙看一下 这个是什么意思  谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
MrXiong
1楼-- · 2019-08-17 00:36
#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))
这个语句是宏定义的一种,也就是6楼说的带参数的宏定义,意思很简单,普通的宏定义是#define TURE 1,上面的语句其实跟这句意思一样就是用TURE表示1,那么上面的语句的意思就是用IS_RCC_APB2_PERIPH(PERIPH) 代表
((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00)),两者的不同在于后者带了参数,后者也是一个带参数的函数,不难发现((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))这个是一个计算的公式一样的存在,值取决于参数的值。
虾兵蟹将
2楼-- · 2019-08-17 01:56
在 assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph))语句中可以查到这个函数,assert_param的作用就是用来判断传递给函数的参数是否是有效值,而RCC_APB2Periph的定义如下:
#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))
星光闪闪亮
3楼-- · 2019-08-17 06:25
 精彩回答 2  元偷偷看……
星光闪闪亮
4楼-- · 2019-08-17 08:38
yklstudent 发表于 2017-7-12 17:56
楼主先把C语言玩熟玩透了

C语言确实不行  现在只能用一点学一点    要是懂的话  给指点一下可以吗?
学霸君
5楼-- · 2019-08-17 09:11
星光闪闪亮 发表于 2017-7-12 16:39
那最后一行这个定义什么意思  能翻译一下吗  谢谢

带参数的宏定义,
星光闪闪亮
6楼-- · 2019-08-17 11:06
MrXiong 发表于 2017-7-12 10:59
#define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))
这个语 ...

恩恩 大概意思我懂了  谢谢   那再麻烦你一下,((((PERIPH) & 0xFFC00002) == 0x00) && ((PERIPH) != 0x00))这个类似公式的东西是想表达什么呢?

一周热门 更多>