这阵子经过STM32的学习,学到的不仅仅是硬件的常识,关于工程的结构也学到了一些有用的东西。曾经学习51的时分便是一个文件写究竟,把一切的函数写到一个c文件中,一切的变量也界说在一个c文件中。
可是这阵子触摸到了模块化的思维,每一个外设,对应着一个独自的驱动程序,包含一个c文件还有一个h文件。在树立工程之后,先树立组,包含USER,能够把主文件放在这个组里边;SYSTEM组,能够吧体系的一些通用型文件放在这个组里边;HARDWEAR组,能够把外设放在这个组里边。还能够树立一个组放说明性的文件。这样使得整个工程的结构非常的明晰,在调试程序的时分非常便利,在今后自己从头看这个工程的时分也能够很快的理清整个工程个头绪。
在主文件里边,也便是main.c文件里边,写主程序的代码,其他的函数经过调用头文件的方法来调用。关于每一个外设,都要有一个独自的驱动程序,这样的话能够非常便利的进行移植,记住在假日写的MSP430驱动12864液晶以及矩阵键盘的程序,修改了很少的当地就能够移植到STM32进步行运用,大大的缩短了自己的开发时刻。在电设正式竞赛的时分,我写程序基本上便是在复制粘贴,从头构架程序的结构,由于之前的练习中基本上把各个模块的驱动程序都写好了。
在外设驱动程序的H文件中,首要进行函数的声明,必定要切忌在头文件中界说变量或许界说函数,由于在一个工程中,同一个变量或许函数能够被声明很屡次,可是只能够进行一次界说!由于头文件或许不只是在一个文件中调用,所以不能够呈现 界说!不然编译会犯错的!函数的声明便是函数声明的一般方式。变量的声明能够选用 extern int i;的方式。可是必定要注意extern int i;和extern int i=0;的差异,前者是声明,后者是界说。只要是需求调用此外设驱动函数和变量的文件中,就要加上#include
#ifndef _LED_H
#define _LED_H
#define LED0 PAout(9)
extern u8 x;
void LED(void);
#endif
在外设的c文件中,首要是界说相关的变量,还有相关的驱动函数,本文件所涉及到的函数运用也要经过头文件的调用进行声明。
所以,头文件能够理解为便是各个c文件之间衔接的桥梁。在各个c文件中才是变量以及函数的声明。