Мигание светодиодом на AT91SAM7S256

Очень часто необходимо осуществлять вывод выходных данных или логических состояний на GPIO пин при работе с семейством AT91SAM7S, например что бы прозвести включение-выключение светодиода. Вот один из простых и наглядных примеров как можно произвести мигание светодиодом.


Данный листинг программы показывает как можно осуществить включение-выключение светодиода на пине PA2.

#include "AT91SAM7S64.h"
/* Главная функция программы */ int main(void) {     AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // запретить WATCH_DOG     // Enable NRST input. Для удобства при отладке.     AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (AT91C_RSTC_KEY & (0xA5UL << 24));
    enum { WORKMASK = AT91C_PIO_PA2 }; // битовая маска, определяет с каким выводом работать, тут PA2
    AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOA); // enable periph clock for PIO controller
    AT91C_BASE_PIOA->PIO_PER = WORKMASK; // disable peripherial, connected to this pin. Use as PIO.     AT91C_BASE_PIOA->PIO_PPUDR = WORKMASK; // disable pull-up resistors     AT91C_BASE_PIOA->PIO_OER = WORKMASK; // эти выводы на вывод     //AT91C_BASE_PIOA->PIO_MDER = WORKMASK;// 5 volt (open drain) output     for (;;)     {         AT91C_BASE_PIOA->PIO_SODR = WORKMASK; // ставим единичку на выходе         /* здесь нужно вставить задержку */         AT91C_BASE_PIOA->PIO_CODR = WORKMASK; // ставим ноль на выходе         /* здесь нужно вставить задержку */     } }
 Мигать будет быстро :) глазом не усмотреть. Нужно поставить задержки где надо. 

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