Example for AT91SAM7S — function main()

Рассматрим как выглядит программа для ARM7 микроконтроллера.

В данном обзоре посмотрим как приблизительно должна выглядить программа а точнее ее главная функция — main(){};

Взято с какогото одного моего старого проекта на этом микроконтроллере и подрихрованно.

 

#include "stddef.h"
#include "stdarg.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "at91sam7s64.h"
#include "init.h"
#include "ports.h"
#include "delays.h"
#include "interrupt.h"
#include "lcd.h"
#include "usart.h"
#include "variables.h"
#include "variables.h"
#include "mmc.h"
#include "protokol.h" 

int main (void){
 AT91PS_SYS regs = AT91C_BASE_SYS;

    AT91PS_DBGU dbgu = AT91C_BASE_DBGU;
    AT91PS_PIO pio = AT91C_BASE_PIOA;

    dbgu->DBGU_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS;
    delay();

    dbgu->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN;
    dbgu->DBGU_MR = 0x800; /* No parity, normal mode */
    regs->DBGU_BRGR = 0xA; /* 115200 @ 18.432 MHz */

    /* Init IO */
    /* Disable PIO on DBGU pins */
    pio->PIO_PDR |= (AT91C_PIO_PA9 | AT91C_PIO_PA10);
    pio->PIO_PER &= ~(AT91C_PIO_PA9 | AT91C_PIO_PA10);

    /* Enable peripheral A on DBGU pins */
    pio->PIO_ASR |= (AT91C_PIO_PA9 | AT91C_PIO_PA10);
    pio->PIO_BSR &= ~(AT91C_PIO_PA9 | AT91C_PIO_PA10);

/*-----------------------------------------------*/

  init_SYS(); // init of system
  init_TMR(); // init of timer
  init_PMC(); // init of piripherial
  init_PIOA(); // init of piripherial
  init_AIC(); // init of piripherial
  init_LCD(); // init of LCD
  init_ComPort(); // init of DBGU serial port
  init_ComPort1(); // init of COM-port
  init_SPI(); // init of SPI port

  init_show(); // Show finished initialization

/*-----------------------------------------------*/ 

     while(1){
      HereFirstFunctionForLoopWork();
      HereSecondFunctionForLoopWork();

    /*Here debug function dor work with Character-LCD*/
//lcd_sniffit(key__3,2,0,'?'); lcd_sniffit(kbd_x,3,0,'?');
// regs->PIOA_ODSR |= _B1; delay(); regs->PIOA_ODSR &= ~_B1; delay();
// regs->PIOA_ODSR ^= 0x80000000;    regs->PIOA_ODSR ^= 0x80000000;

    }
}

 

 

Как видно из этого кода, должны быть еще дополнительные функции. Но их мы рассмотри позже.

PS: Со временем этот пост обновится…

Добавить комментарий