搜索

GD32新版固件库中,不再提供外设的寄存器描述

[复制链接]
1489|5
 楼主 | 2018-8-18 23:21 | 显示全部楼层 |阅读模式
本帖最后由 le062 于 2018-8-19 09:08 编辑

GD32新版固件库中,不再提供外设的寄存器描述,反而使用一系列的宏定义。
个人感觉是一种倒退,对于驱动开发效率有所影响。
示例:
老版本GPIO:
  1. typedef struct
  2. {
  3.     __IO uint32_t CTLR;        /*!< GPIO port mode register,                       Address offset: 0x00      */
  4.     __IO uint16_t OMODE;       /*!< GPIO port output type register,                Address offset: 0x04      */
  5.     uint16_t RESERVED0;        /*!< Reserved,                                                      0x06      */
  6.     __IO uint32_t OSPD;        /*!< GPIO port output speed register,               Address offset: 0x08      */
  7.     __IO uint32_t PUPD;        /*!< GPIO port pull-up/pull-down register,          Address offset: 0x0C      */
  8.     __IO uint16_t DIR;         /*!< GPIO port input data register,                 Address offset: 0x10      */
  9.     uint16_t RESERVED1;        /*!< Reserved,                                                      0x12      */
  10.     __IO uint16_t DOR;         /*!< GPIO port output data register,                Address offset: 0x14      */
  11.     uint16_t RESERVED2;        /*!< Reserved,                                                      0x16      */
  12.     __IO uint32_t BOR;         /*!< GPIO port bit set/reset registerBSRR,          Address offset: 0x18      */
  13.     __IO uint32_t LOCKR;       /*!< GPIO port configuration lock register,         Address offset: 0x1C      */
  14.     __IO uint32_t AFS[2];      /*!< GPIO alternate function HIGH register,         Address offset: 0x20-0x24 */
  15.     __IO uint16_t BCR;         /*!< GPIO bit reset register,                       Address offset: 0x28      */
  16.     uint16_t RESERVED3;        /*!< Reserved,                                                      0x2A      */
  17. }GPIO_TypeDef;
  18. #define GPIOA                 ((GPIO_TypeDef *)GPIOA_BASE)
  19. #define GPIOB                 ((GPIO_TypeDef *)GPIOB_BASE)
  20. #define GPIOC                 ((GPIO_TypeDef *)GPIOC_BASE)
  21. #define GPIOD                 ((GPIO_TypeDef *)GPIOD_BASE)
  22. #define GPIOF                 ((GPIO_TypeDef *)GPIOF_BASE)

复制代码


新版本GPIO:
  1. /* GPIOx(x=A,B,C,D,F) definitions */
  2. #define GPIOA                      (GPIO_BASE + 0x00000000U)
  3. #define GPIOB                      (GPIO_BASE + 0x00000400U)
  4. #define GPIOC                      (GPIO_BASE + 0x00000800U)
  5. #define GPIOD                      (GPIO_BASE + 0x00000C00U)
  6. #define GPIOF                      (GPIO_BASE + 0x00001400U)

  7. /* registers definitions */
  8. #define GPIO_CTL(gpiox)            REG32((gpiox) + 0x00U)    /*!< GPIO port control register */
  9. #define GPIO_OMODE(gpiox)          REG32((gpiox) + 0x04U)    /*!< GPIO port output mode register */
  10. #define GPIO_OSPD0(gpiox)          REG32((gpiox) + 0x08U)    /*!< GPIO port output speed register 0 */
  11. #define GPIO_PUD(gpiox)            REG32((gpiox) + 0x0CU)    /*!< GPIO port pull-up/pull-down register */
  12. #define GPIO_ISTAT(gpiox)          REG32((gpiox) + 0x10U)    /*!< GPIO port input status register */
  13. #define GPIO_OCTL(gpiox)           REG32((gpiox) + 0x14U)    /*!< GPIO port output control register */
  14. #define GPIO_BOP(gpiox)            REG32((gpiox) + 0x18U)    /*!< GPIO port bit operation register */
  15. #define GPIO_LOCK(gpiox)           REG32((gpiox) + 0x1CU)    /*!< GPIO port configuration lock register */
  16. #define GPIO_AFSEL0(gpiox)         REG32((gpiox) + 0x20U)    /*!< GPIO alternate function selected register 0 */
  17. #define GPIO_AFSEL1(gpiox)         REG32((gpiox) + 0x24U)    /*!< GPIO alternate function selected register 1 */
  18. #define GPIO_BC(gpiox)             REG32((gpiox) + 0x28U)    /*!< GPIO bit clear register */
  19. #define GPIO_TG(gpiox)             REG32((gpiox) + 0x2CU)    /*!< GPIO port bit toggle register */
  20. #define GPIO_OSPD1(gpiox)          REG32((gpiox) + 0x3CU)    /*!< GPIO port output speed register 1 */
复制代码



| 2018-8-19 17:04 | 显示全部楼层
我觉得新版本更规范了。

使用特权

评论回复
| 2018-8-23 21:15 | 显示全部楼层
这代码里面描述还是很详细的呀

使用特权

评论回复
| 2018-8-28 14:00 | 显示全部楼层
厂家就是这样,进进退退,就比如ST的多种库一样,总是各种修改。

使用特权

评论回复
| 2021-4-8 15:49 | 显示全部楼层
我也在找老版本,新版本的执行效率感觉变低了

使用特权

评论回复
| 2021-4-8 18:46 | 显示全部楼层
看起来确实不便利

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表