Informática Industrial GIEI UCA Cheat Sheet

A Programming › C cheat sheet in español (Spanish) by alejandrolara

Cheat sheet para la asignatura de Informática Industrial de GIEI en la Universidad de Cádiz (UCA)

3,431 views 837 downloads 4 Mar 2024 History

Tipos de datos

Tipo
Denomi­nación
Tamaño
Rango
Ejemplos de uso
uint8_t
Entero sin signo
8bits
[0,255]
Caract­eres, contadores de for
uint16_t
Entero sin signo
16bits
[0,63535]
uint32_t
Entero sin signo
32bits
[0,429­496­7295]
Almacenar valores de registros
int8_t
Entero con signo
8bits
[-128,127]
int16_t
Entero con signo
16bits
[-3276­8,3­2767]
int32_t
Entero con signo
32bits
[-2147­483­648­,21­474­83647]
float
Punto flotante
32bits
[-3.4·1038,3.4·1038]
Hasta 6 dígitos signif­ica­tivos
double
Doble
64bits
[-1.79·10308,1.79·10308]
Hasta 14 dígitos signif­ica­tivos

Sentencia if

if (condición){
    in­str­ucc­ión1;
    in­str­ucc­ión2;
}else if (condición2){
    in­str­ucc­ión3;
    in­str­ucc­ión4;
}else{
    in­str­ucc­ión5;
}
Las condic­iones del if y del else if tienen que ser mutuamente excluy­entes, es decir, no pueden darse simult­ane­amente.

El else if y el else no son obliga­torios.

La condición siempre debe ir entre parént­esis.

Sentencia switch

switch (selector){
    case etiqueta1:
      ­  s­ent­encia1;
        break;
    case etiqueta2:
      ­  s­ent­encia2;
        break;
    case etiqueta3:
      ­  s­ent­encia3;
        break;
    default:
      ­  s­ent­encia;
}
El selector solo puede ser un entero o carácter.

Se deben recoger todas las opciones posibles en los case aunque sean iguales.

Es altamente recome­ndable utilizar el caso default para los casos que no estén definidos.

¡No olvidar el break para evitar seguir ejecutando instru­cci­ones!

Bucle for

for (inicial; cond; increm){
    in­str­ucc­iones;
}
PARA CADA incremento DESDE inicia­liz­ación MIENTRAS QUE la condición sea cierta, REALIZAR instru­cciones

Bucle while

while (condición){
    in­str­ucc­iones;
}
MIENTRAS QUE la condición sea cierta, REALIZAR instru­cciones

Bucle do while

do{
    in­str­ucc­iones;
}while (condición);
REALIZAR las instru­cciones HASTA QUE la condición sea FALSA
Se ejecuta al menos 1 vez

adc_lp­c40xx.h

#define SEL_CANAL_0 (1u << 0)
#define SEL_CANAL_1 (1u << 1)
#define SEL_CANAL_2 (1u << 2)
#define SEL_CANAL_3 (1u << 3)
#define SEL_CANAL_4 (1u << 4)
#define SEL_CANAL_5 (1u << 5)
#define SEL_CANAL_6 (1u << 6)
#define SEL_CANAL_7 (1u << 7)

void adc_inicializar(uint32_t frecuencia_adc, uint32_t canales);

uint32_t adc_convertir(uint32_t canal);

float32_t adc_traducir_a_tension(uint32_t resultado_adc);

glcd.h

#define NEGRO           RGB(0, 0, 0)
#define AZUL_OSCURO     RGB(0, 0, 128)
#define VERDE_OSCURO    RGB(0, 128, 0)
#define CIAN_OSCURO     RGB(0, 128, 128)
#define MARRON          RGB(128, 0, 0)
#define PURPURA         RGB(128, 0, 128)
#define OLIVA           RGB(128, 255, 0)
#define NARANJA         RGB(255, 128, 0)
#define GRIS_CLARO      RGB(192, 192, 192)
#define GRIS_OSCURO     RGB(128, 128, 128)
#define AZUL            RGB(0, 0, 255)
#define VERDE           RGB(0, 255, 0)
#define CIAN            RGB(0, 255, 255)
#define ROJO            RGB(255, 0, 0)
#define MAGENTA         RGB(255, 0, 255)
#define AMARILLO        RGB(255, 255, 0)
#define BLANCO          RGB(255, 255, 255)

void glcd_inicializar(void);

void glcd_borrar(uint16_t color);

int32_t glcd_xprintf(int32_t x,
                     int32_t y,
                     uint16_t color,
                     uint16_t color_fondo,
                     uint32_t font,
                     const char *fmt, ...);

void glcd_circunferencia(int32_t xc,
                         int32_t yc,
                         int32_t radio,
                         uint16_t color);

void glcd_circulo(int32_t xc,
                  int32_t yc,
                  int32_t radio,
                  uint16_t color);

void glcd_punto(int32_t x,
                int32_t y, 
                uint16_t color);

void glcd_linea(int32_t x0,
                int32_t y0,
                int32_t x1,
                int32_t y1,
                uint16_t color);
               
void glcd_rectangulo(int32_t x0,
                     int32_t y0,
                     int32_t x1,
                     int32_t y1,
                     uint16_t color);

void glcd_rectangulo_relleno(int32_t x0,
                             int32_t y0,
                             int32_t x1,
                             int32_t y1,
                             uint16_t color);

Máscaras binarias

   
Cambiar bit de dato
1 en bit p
(1<­<p)
dato |= (1<­<p)
0 en bit p
~(1<<p)
dato &= ~(1<<p)
Selec. bit p
(dato>­>p)­&1

Operadores binarios (bit a bit)

|
or
&
and
~
not
^
xor
Son operac­iones bit a bit, no confundir con las operac­iones booleanas que tienen como resultado TRUE o FALSE

Operadores booleanos

||
or
&&
and
!
not
==
igual que
!=
diferente de
Se utilizan princi­pal­mente para definir condic­iones en los if o bucles

Coment­arios

//
Comentario de una linea
/* ...... */
Comentario de bloque

Tipos de datos no estándar

unsigned char
uint8_t
unsigned short
uint16_t
unsigned int
uint32_t
unsigned long
uint64_t
char
int8_t
short
int16_t
int
int32_t
long
int64_t
Utilizar siempre los tipos estándar pues los aquí recogidos pueden variar entre versiones del compilador y el microc­ont­rolador utilizado

Estructura general

#include <LPC407x_8x_177x_8x.h>
**// Agregamos todos los #include que utilicemos**
#include "libreria.h"

**// Agregamos todos los #define que sean necesarios**
**// porque sean constantes como PI o parámetros de**
**// configuración**
#define *etiqueta* valor

**//Prototipos de funciones**

int main(void){

    **// Declaramos las variables que necesitemos**
    uint8_t c = 0;

    **// Inicializamos los periféricos y**
    **// componentes externos:**
    glcd_inicializar();

    **// Secuencia de instrucciones previas al**
    **// bucle infinito**

    while(1){

        **// Instrucciones a repetir infinitamente**
    }
}

iocon_­lpc­40xx.h

void iocon_configurar_pin(LPC_GPIO_TypeDef *gpio_regs,
                          uint32_t mascara_pin,
                          funcion_pin_t funcion,
                          uint32_t configuracion_es);

timer_­lpc­40xx.h

void timer_inicializar(LPC_TIM_TypeDef *timer_regs);

void timer_retardo_ms(LPC_TIM_TypeDef *timer_regs,
                      uint32_t retardo_en_ms);
                      
void timer_retardo_us(LPC_TIM_TypeDef *timer_regs,
                      uint32_t retardo_en_us);
                      
void timer_iniciar_ciclos_ms(LPC_TIM_TypeDef *timer_regs,
                             uint32_t periodo_en_ms);
                               
void timer_iniciar_ciclos_us(LPC_TIM_TypeDef *timer_regs,
                             uint32_t periodo_en_us);
                               
void timer_esperar_fin_ciclo(LPC_TIM_TypeDef *timer_regs);

void timer_iniciar_conteo_ms(LPC_TIM_TypeDef *timer_regs);

void timer_iniciar_conteo_us(LPC_TIM_TypeDef *timer_regs);

uint32_t timer_leer(LPC_TIM_TypeDef *timer_regs);

Comments

No comments yet.

Cheatography n. The art of mapping complex subjects into clear, instantly navigable reference guides.