完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32库函数中,有一个函数是这样的
FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG) { uint32_t tmp = 0; uint32_t statusreg = 0; FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_RCC_FLAG(RCC_FLAG)); /* Get the RCC register index */ tmp = RCC_FLAG >> 5; if (tmp == 1) /* The flag to check is in CR register */ //为什么? { statusreg = RCC->CR; } else if (tmp == 2) /* The flag to check is in BDCR register */ // 为什么? { statusreg = RCC->BDCR; } else /* The flag to check is in CSR register */ //为什么? { statusreg = RCC->CSR; } /* Get the flag position */ tmp = RCC_FLAG & FLAG_MASK; if ((statusreg & ((uint32_t)1 << tmp)) != (uint32_t)RESET) { bitstatus = SET; } else { bitstatus = RESET; } /* Return the flag status */ return bitstatus; } 为什么(tmp == 1)就可以判断/* The flag to check is in CR register */ ?? 为什么(tmp == 2)就可以判断 /* The flag to check is in BDCR register */ ?? 为什么其它的就可以判断 /* The flag to check is in CSR register */ ?? 另外 if ((statusreg & ((uint32_t)1 << tmp)) != (uint32_t)RESET) { bitstatus = SET; } else { bitstatus = RESET; } 这是为什么? |
|
相关推荐
1个回答
|
|
[C] 纯文本查看 复制代码
#define RCC_FLAG_HSIRDY ((uint8_t)0x21)#define RCC_FLAG_HSERDY ((uint8_t)0x31)#define RCC_FLAG_PLLRDY ((uint8_t)0x39)#define RCC_FLAG_LSERDY ((uint8_t)0x41)#define RCC_FLAG_LSIRDY ((uint8_t)0x61)#define RCC_FLAG_PINRST ((uint8_t)0x7A)#define RCC_FLAG_PORRST ((uint8_t)0x7B)#define RCC_FLAG_SFTRST ((uint8_t)0x7C)#define RCC_FLAG_IWDGRST ((uint8_t)0x7D)#define RCC_FLAG_WWDGRST ((uint8_t)0x7E)#define RCC_FLAG_LPWRRST ((uint8_t)0x7F) 时钟就绪标志位有很多个,他分布在几个寄存器里面。。。 上面的宏定义就是这个函数的入口参数,库函数在处理的时候,他自己定义了这些宏定义的值,用来方便库函数去判断。。。 仅仅只是库函数自己的逻辑而已。。。。 比如3个在CR寄存器,3个在BDCR寄存器,那么他就自己定义这些值,定义到3个是在CR寄存器里面的标志位的话,他就把第5位弄为1.方便他自己去判断。。。 |
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4085 浏览 18 评论
1171浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
594浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2332浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 19:31 , Processed in 1.046465 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号