打印
[STM32F1]

关于stm32f10x.h中关于bit definition的问题

[复制链接]
1364|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ares_tina|  楼主 | 2017-5-12 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在stm32f10x.h文件中,有一大段关于外设寄存器bit definition的定义。比如随意摘取一部分如下。对这一块不是很理解,这些宏定义表示什么,宏对应的uint32_t值表示什么,为什么用这些值。然后,从固件库的角度,是怎么使用这些宏的?谢谢指点!

/******************************************************************************/
/*                General Purpose and Alternate Function I/O                  */
/*                                                                            */
/******************************************************************************/

/*******************  Bit definition for GPIO_CRL register  *******************/
#define  GPIO_CRL_MODE                       ((uint32_t)0x33333333)        /*!< Port x mode bits */

#define  GPIO_CRL_MODE0                      ((uint32_t)0x00000003)        /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */
#define  GPIO_CRL_MODE0_0                    ((uint32_t)0x00000001)        /*!< Bit 0 */
#define  GPIO_CRL_MODE0_1                    ((uint32_t)0x00000002)        /*!< Bit 1 */

#define  GPIO_CRL_MODE1                      ((uint32_t)0x00000030)        /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */
#define  GPIO_CRL_MODE1_0                    ((uint32_t)0x00000010)        /*!< Bit 0 */
#define  GPIO_CRL_MODE1_1                    ((uint32_t)0x00000020)        /*!< Bit 1 */

#define  GPIO_CRL_MODE2                      ((uint32_t)0x00000300)        /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */
#define  GPIO_CRL_MODE2_0                    ((uint32_t)0x00000100)        /*!< Bit 0 */
#define  GPIO_CRL_MODE2_1                    ((uint32_t)0x00000200)        /*!< Bit 1 */

#define  GPIO_CRL_MODE3                      ((uint32_t)0x00003000)        /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */
#define  GPIO_CRL_MODE3_0                    ((uint32_t)0x00001000)        /*!< Bit 0 */
#define  GPIO_CRL_MODE3_1                    ((uint32_t)0x00002000)        /*!< Bit 1 */

#define  GPIO_CRL_MODE4                      ((uint32_t)0x00030000)        /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */
#define  GPIO_CRL_MODE4_0                    ((uint32_t)0x00010000)        /*!< Bit 0 */
#define  GPIO_CRL_MODE4_1                    ((uint32_t)0x00020000)        /*!< Bit 1 */
沙发
airwill| | 2017-5-14 21:04 | 只看该作者
这是所谓的掩码定义
使用起来是这样的

GPIOx->CRL |= GPIO_CRL_MODE0_1 ;       //

具体就看驱动库里的娴熟应用吧

使用特权

评论回复
板凳
yklstudent| | 2017-5-14 22:02 | 只看该作者
楼主需要的是提高C语言能力

使用特权

评论回复
地板
chenci2013| | 2017-5-14 22:53 | 只看该作者
定义的掩码,有什么不同

使用特权

评论回复
5
chenci2013| | 2017-5-14 22:54 | 只看该作者
这个都是设置某位数据表示的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

27

帖子

0

粉丝