Esta pregunta es sobre programación, pero sobre programación electrónica, así que pensé en publicarla aquí en lugar de stackoverflow . Acabo de empezar mis proyectos de electrónica. He diseñado dos aplicaciones y he hecho su parte de hardware y firmware yo mismo. Aquí, en esta pregunta, quiero saber cómo escribir un programa de C eficiente y cómo administrar todos los archivos del proyecto.
Digamos en una aplicación, tenemos las siguientes partes:
- GPIOs
- Comunicación en serie
- RTC (Comunicación I2C)
- Tarjeta SD (SPI Communication)
La forma en que trabajo es crear diferentes archivos para cada módulo. Me gusta para Serial Communication
:
//serial.c
//function to initialize serial communication
void serialInit()
{
}
//function to send data
void serialSend()
{
}
//function to receive data
void serialReceive()
{
}
Así que en serial.c
he hecho todas las funciones necesarias para la comunicación en serie.
//serial.h
void serialInit();
void serialSend();
void serialReceive();
/*
* All the variable used in serialInit(), serialSend(), serialReceive().
* char rxData = 0;
* int i,j=0; ..etc
*/
y en serial.h
incluyo todas las variables utilizadas en serial.c
. Lo mismo ocurre con cada archivo como rtc.c
rtc.h
sdcard.c
sdcard.h
. I main.c
Incluyo todos los archivos de encabezado:
//main.c
#include "serial.h"
#include "rtc.h"
#include "sdcard.h"
main.c contiene toda la parte de lógica y programación. Todas las variables utilizadas dentro de main.c se definen en main.h. Ahora el problema ocurre aquí alguna vez. Como main.h contiene todas las variables y si necesito incluir main.h en cualquier otro archivo fuente, da error: multiple definition
. He buscado este error y he encontrado muchas soluciones a él. Quiero saber la eficacia de manejar este problema. ¿Cuáles son algunas buenas prácticas para el diseño de firmwares. Es la forma en que estoy escribiendo es la manera correcta o no. ¿Cuáles son otros métodos para manejar los principales firmwares integrados?