stm32库函数各类宏定义总结
在各类芯片官方的库函数中,都会遇到大量的宏定义,无论是结构体,还是各类数据量、函数,都用宏来定义,封装了一层实际意义,不用对着datasheet计算各种寄存器的初始值,极大地简化了开发时间。今天就来总结一下在stm32官方库函数中宏定义的作用。
一、宏的表现形式
宏定义的写法:
#define A B
可以理解为,在c程序预编译过程中,程序中所有出现A的地方,都会用B来代替,然后程序再送到编译器进行编译。
二、宏定义的种类
1.普通定义
#define SYSCLK_FREQ_72MHz 72000000
该语句的作用是将数字72000000定义为SYSCLK_FREQ_72MHz,该标识符能直观表示系统时钟为72MHZ。
2.宏函数
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
这看起来复杂,其实就是定义了一个函数BITBAND(addr, bitnum),右边可以理解为关于这两个参数的运算。
宏函数还可以嵌套,比如
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n)