前言
- HAL库结构基础是基于位操作+对地址读写
重要的位操作宏定义
头文件: stm32f1xx.h文章来源:https://www.toymoban.com/news/detail-645409.html
#define SET_BIT(REG, BIT) ((REG) |= (BIT)) /*对某一位置1*/
#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) /*对某一位置0*/
#define READ_BIT(REG, BIT) ((REG) & (BIT)) /*读取某一位*/
#define CLEAR_REG(REG) ((REG) = (0x0)) /*整体置为0*/
#define WRITE_REG(REG, VAL) ((REG) = (VAL))/*整体赋值*/
#define READ_REG(REG) ((REG))/*读取整体值*/
/*多个位的置0和多个位的置1*/
#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
编程约定
- SET_BIT中的BIT是要保证BIT的值只有一位为‘1’,其余均为‘0’
判断位操作
头文件: stm32f1xx_hal_def.h文章来源地址https://www.toymoban.com/news/detail-645409.html
#define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) != 0U)
#define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U)
到了这里,关于STM32源码阅读之HAL位操作相关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!