结构体要注意pack,要提防编译器自作主张给你塞几个字节进去。
用宏来描述确定性更强,而且抽象成本是0
/* registers definitions */
#define DMA_INTF REG32(DMA + 0x00U) /*!< DMA interrupt flag register */
/* bits definitions */
/* DMA_INTF */
#define DMA_INTF_GIF BIT(0) /*!< global interrupt flag of channel */
#define DMA_INTF_FTFIF BIT(1) /*!< full transfer finish flag of channel */
#define DMA_INTF_HTFIF BIT(2) /*!< half transfer finish flag of channel */
#define DMA_INTF_ERRIF BIT(3) /*!< error flag of channel */
【 在 tom6bj (tom) 的大作中提到: 】
: 结构体风格的移植性有什么问题呢, 都是标准c
: stm32官方库通过了什么ansi认证的吧
: gd32的库用了大量的宏,很多操作在预编译阶段就搞定了,可读性略差,感觉效率应该高一点。对于倾向于直接使用寄存器操作的用户更友好。
: ...................
--
FROM 36.45.172.*