static函数与普通函数的区别:
      1. 用static修饰的函数,限定在本源码文件中使用,不能被本源码文件以外的代码文件调用。
      2. 普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。

      若在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数有以下好处:
      1. 其他文件中可以定义相同名字的函数,不会发生冲突。
      2. 静态函数不能被其他文件所用。

    如果在其它文件调用该static定义的函数,编译器则提示:

    //假设:
        //A.c文件中定义:
        static void SofTool_CN(void)
        {
            //...
        }
    
        B.c文件直接调用A.c文件中的该函数:
        SofTool_CN();
        //    此时如果没有加extern,提示错误:
        Error   : armlink: L6218:  Undefined symbol SofTool_CN (referred from B.o).
        Error   : link exit status = 2
        //    如果像普通函数声明:
        extern static void SofTool_CN(void);
        //再调用:
        SofTool_CN();
        //提示错误:
        Error   :  #114: function "SofTool_CN" was referenced but not defined
        B.c line 216   static void SofTool_CN(void);
        Error   : armcc Compile exit status = 2