关于STM32函数定义
1. *(__IO uint8_t *) CIR_BYTE3_ADDRESS
#define __IO volatile /*!< Defines 'read / write' permissions
声明 volatile ,目的:使编译器不优化该变量。从相应变量内存中取数。
/* Check the parameters */
assert_param(IS_TIM_ALL_PERIPH(TIMx)); //assert _param函数作参数检查用
2. static:
static局部变量中文名叫静态局部变量。它与普通的局部变量比起来有如下几个区别:
1)位置:静态局部变量被编译器放在全局存储区.data(注意:不在.bss段内,原因见3)),所以它虽然是局部的,但是在程序的整个生命周期中存在,调用完毕后需要手动释放内存空间。
2)访问权限:静态局部变量只能被其作用域内的变量或函数访问。也就是说虽然它会在程序的整个生命周期中存在,由于它是static的,它不能被其他的函数和源文件访问。
3)值:静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,以后每次调用静态局部变量的时候都用上次调用后的值。这个比较好理解,每次函数调用静态局部变量的时候都修改它然后离开,下次读的时候从全局存储区读出的静态局部变量就是上次修改后的值。
3. extern 外部变量声明
作全局变量用,在本文件中 int j;
外部文件声明: extern int j;
4.typedef 的应用(有参数类型检查功能)
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __INT64 uint64_t;5.define的应用
#define SYSTEM_SUPPORT_OS 0 //用 SYSTEM_SUPPORT_OS 代替 0
define语句的特点:对参数不做任何检查,在函数编译时就直接有效