В данном уроке мы настроем ножку на вход, и при нажатии кнопки у нас будет светиться светодиод, при повторном нажатии светодиод будет гаснуть.
В данном микроконтроллере есть возможность включить аппаратное подавление помех:
Для настройки аппаратного подавления помех используется регистр GpioCtrlRegs.GPAQSEL1.bit.GPIOх.
В данном регистре мы устанавливаем количество сэмплов, в течении которых мы не обращаем на вход, то есть, ждем окончания переходного процесса.
Регистр GpioCtrlRegs.GPACTRL.bit.QUALPRDх является делителям частоты для выбранной ножки. Так, например, если к ножке подключена кнопка, нам нет смысла опрашивать ее каждый такт, мы можем поставить коэффициент и опрашивать ее гораздо реже. Значение может принимать от 0х00 (без делителя) до 0хFF (делитель =510).с
#include "DSP28x_Project.h" // подключаем библиотеку
void InitLED(void); // инициализация ножек
void delay(unsigned long i);
void main(void) {
InitSysCtrl();// инициализируе систему: PLL и WatchDog
InitPieCtrl();// функция которая выключает все прерывания и сбрасывает флаги прерываний
InitPieVectTable();//функция которая заполняет таблицу с векторами прерываний
IER = 0x0000;// выключаем прерывания
IFR = 0x0000; // очищаем флаги
InitLED();// настраиваем ножки
while(1) {
GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
delay(500000);
if(GpioDataRegs.GPADAT.bit.GPIO3) // считываем состояние ножки
{GpioDataRegs.GPASET.bit.GPIO1 = 1;}
else {GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;}
}
}
void delay(unsigned long i){// пауза
while(--i){};
}
void InitLED(void){// инициализация
EALLOW; // разрешаем делать изменения в регистрах
//подключаем ножки к выходу.
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
//устанавливаем ножки на выход
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO3 = 0;// на вход
GpioCtrlRegs.GPAPUD.bit.GPIO3 =0;//подтяжка включена
//GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0xFF;//делитель тактовой частоты для ножек 0...7
GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 2;// количество сэмплов для устранения дребезга
EDIS; // запрещаем работать с регистрами
}