Đăng ký Đăng nhập

Tài liệu Code

.DOCX
15
528
113

Mô tả:

code cho hệ thống nhúng
GPIO .c #include "../include.h" #include "GPIO.h" static uint2 _t LED _Status=LLED _RD E static void SWITCH_ISR(vvoid;E extern void Confi_LED (vvoid; { SysCtlPeripheralDnable(vSYSCTLE_PDRIPH_GPIOF;E GPIOPinTypeGPIOOutput(vLED _PORT, LED _RD |LED _BLEUD;E GPIOPinWrite(vLED _PORT, LED _RD |LED _BLEUD, 0;E } extern void Blinky_LED (vvoid; //PF1 OUTPUT { static uint__t i=L0E if(vi=L=L0; i=LLED _StatusE else i=L0E GPIOPinWrite(vLED _PORT, LED _RD |LED _BLEUD, i;E SysCtl elay(vSysCtlClockGet(v;/2;E //delay 1s } extern void Confi_SWITCH(vvoid; //PF4 INPPUT { SysCtlPeripheralDnable(vSYSCTLE_PDRIPH_GPIOF;E GPIOPinTypeGPIOInput(vSWITCH_PORT, SWITCH;E GPIOPadConfiSet(vSWITCH_PORT, SWITCH, GPIO_STRDNPGTH__MA, GPIO_PINP_TYPD_ST _WPU;E GPIOIntReiister(vSWITCH_PORT,&SWITCH_ISR;E GPIOIntDnable(vSWITCH_PORT,GPIO_INPT_PINP_4;E IntDnable(vINPT_GPIOF;E IntMasterDnable(v;E } static void SWITCH_ISR(vvoid; { GPIOIntClear(vGPIO_PORTF_BASD,GPIOIntStatus(vGPIO_PORTF_BASD, true;;E if(vLED _Status=L=LLED _RD ; LED _Status=LLED _BLEUDE else LED _Status=LLED _RD E } .h /* * GPIO.h * * Created on: Mar 1 , 016 * */ Author: Satu #ifndef GPIO_GPIO_H_ #defne GPIO_GPIO_H_ #defne LED _PORT GPIO_PORTF_BASD #defne LED _RD GPIO_PINP_1 #defne LED _BLEUD GPIO_PINP_ #defne SWITCH_PORT GPIO_PORTF_BASD #defne SWITCH GPIO_PINP_4 extern void Confi_LED (vvoid;E extern void Blinky_LED (vvoid;E extern void Confi_SWITCH(vvoid;E #endif /* GPIO_GPIO_H_ */ Blinky #define LED_RED #define LED_GREEN #define LED_BLUE GPIO_PIN_1 GPIO_PIN_2 GPIO_PIN_3 /**************************************************************** * IMPORT ****************************************************************/ #include #include #include #include #include #include "inc/hw_memmap.h" "inc/hw_types.h" "driverlib/gpio.h" "driverlib/sysctl.h" /****************************************************************************** * MAIN *****************************************************************************/ void main (void) { int tick=LED_RED; // Configure clock 40 MHz SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); //PortF Enable SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //Config GPIO that connect to LED - PIN 1,2,3 GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_GREEN|GPIO_PIN_3); //Turn off all LEDs GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|GPIO_PIN_3, 0); //Infinite loop while(1) { GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|GPIO_PIN_3, tick); tick<<=1; if(tick>GPIO_PIN_3) tick=LED_RED; //Delay 1s //SysCtlDelay(count) delay 3*count cycles SysCtlDelay(SysCtlClockGet()/3); } } /**************************************************************** * END OF main.c READ BUTTON STATUS #define #define #define #define #define LED_RED LED_GREEN LED_BLUE SW1 SW2 GPIO_PIN_1 GPIO_PIN_2 GPIO_PIN_3 GPIO_PIN_4 GPIO_PIN_0 /**************************************************************** * IMPORT ****************************************************************/ #include #include #include #include #include #include #include "inc/hw_memmap.h" "inc/hw_types.h" "driverlib/gpio.h" "driverlib/sysctl.h" "inc/hw_gpio.h" int read; /****************************************************************************** * MAIN *****************************************************************************/ void main (void) { // Configure clock 40 MHz SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); //PortF Enable SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //Config GPIO that connect to LED - PIN 1,2,3 GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE); //Turn off all LEDs GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, 0); //Config Buttons HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0x4C4F434B; //Unlocks the GPIO Commit (GPIOCR) register for write access PF0 HWREG(GPIO_PORTF_BASE + GPIO_O_CR) = SW1; GPIODirModeSet(GPIO_PORTF_BASE, SW1|SW2, GPIO_DIR_MODE_IN); GPIOPadConfigSet(GPIO_PORTF_BASE, SW1|SW2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); //Infinite loop while(1) { read=GPIOPinRead(GPIO_PORTF_BASE,SW1|SW2); if((read&(SW1|SW2))==0) GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, LED_RED); else if((read&SW1 )==0) GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, else if((read&SW2)==0) GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, LED_GREEN); LED_BLUE); else GPIOPinWrite(GPIO_PORTF_BASE, } } GPIO INTERRUPT LED_RED|LED_GREEN|LED_BLUE, 0); #define #define #define #define #define LED_RED LED_GREEN LED_BLUE SW1 SW2 GPIO_PIN_1 GPIO_PIN_2 GPIO_PIN_3 GPIO_PIN_4 GPIO_PIN_0 #define PART_TM4C123GH6PM /**************************************************************** * IMPORT ****************************************************************/ #include #include #include #include #include #include #include #include #include "inc/hw_memmap.h" "inc/hw_types.h" "inc/hw_ints.h" "inc/hw_gpio.h" "driverlib/gpio.h" "driverlib/sysctl.h" "driverlib/interrupt.h" /****************************************************************************** * SUB ROUTINE *****************************************************************************/ void ButtonISR(void) { static int tick = LED_RED; GPIOIntClear(GPIO_PORTF_BASE, SW1); GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, tick); tick<<=1; if(tick>GPIO_PIN_3) tick=LED_RED; //Delay 1s SysCtlDelay(SysCtlClockGet()/3); } /****************************************************************************** * MAIN *****************************************************************************/ void main (void) { // Configure clock 40 MHz SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); //PortF Enable SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //Config GPIO that connect to LED - PIN 1,2,3 GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE); //Turn off all LEDs GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, 0); //Config Buttons GPIODirModeSet(GPIO_PORTF_BASE, SW1, GPIO_DIR_MODE_IN); GPIOPadConfigSet(GPIO_PORTF_BASE, SW1, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU); //Config GPIO Interrupt for SW1 GPIOIntTypeSet(GPIO_PORTF_BASE,SW1, GPIO_FALLING_EDGE); GPIOIntRegister(GPIO_PORTF_BASE,&ButtonISR); GPIOIntEnable(GPIO_PORTF_BASE, SW1); IntEnable(INT_GPIOF); IntMasterEnable(); //Infinite loop while(1) { } } timER #include #include #include #include #include #include #include #include #include "inc/tm4c123gh6pm.h" "inc/hw_memmap.h" "inc/hw_types.h" "driverlib/sysctl.h" "driverlib/interrupt.h" "driverlib/gpio.h" "driverlib/timer.h" /**************************************************************** * EXTERN ****************************************************************/ void Timer0IntHandler(void); /***************************************************************** GLOBAL VARIABLE ******************************************************************/ /***************************************************************** * ROUTINES ******************************************************************/ /* -- void Timer0IntHandler(void) -------------------------------------* * Description : Timer 0 interrupts handler . * Parameters: none * Return : don't care */ void Timer0IntHandler(void) { // Clear the timer interrupt TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); // Read the current state of the GPIO pin and // write back the opposite state if(GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_2)) { GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0); } else { GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 4); } } /****************************************************************************** * MAIN *****************************************************************************/ int main(void) { uint32_t ui32Period; SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ| SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); ui32Period = (SysCtlClockGet() / 10) / 2; TimerLoadSet(TIMER0_BASE, TIMER_A, ui32Period -1); IntEnable(INT_TIMER0A); TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); IntMasterEnable(); TimerEnable(TIMER0_BASE, TIMER_A); while(1) { } } UART_UsingInterrupts #include #include #include #include #include #include #include #include #include #include "inc/hw_ints.h" "inc/hw_memmap.h" "inc/hw_types.h" "driverlib/gpio.h" "driverlib/interrupt.h" "driverlib/pin_map.h" "driverlib/sysctl.h" "driverlib/uart.h" /**************************************************************** * EXTERN ****************************************************************/ void UARTIntHandler(void); /***************************************************************** GLOBAL VARIABLE ******************************************************************/ /***************************************************************** * ROUTINES ******************************************************************/ /* -- void UARTIntHandler(void) ---------------------------------* * Description : UART interrupts handler . * Parameters: none * Return : don't care */ void UARTIntHandler(void) { uint32_t ui32Status; ui32Status = UARTIntStatus(UART0_BASE, true); //get interrupt status UARTIntClear(UART0_BASE, ui32Status); //clear the asserted interrupts while(UARTCharsAvail(UART0_BASE)) //loop while there are chars { UARTCharPutNonBlocking(UART0_BASE, UARTCharGetNonBlocking(UART0_BASE)); //echo character GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2); //blink LED SysCtlDelay(SysCtlClockGet() / (1000 * 3)); //delay ~1 msec GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0); //turn off LED } } /****************************************************************************** * MAIN *****************************************************************************/ int main(void) { SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); GPIOPinConfigure(GPIO_PA0_U0RX); GPIOPinConfigure(GPIO_PA1_U0TX); GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //enable GPIO port for LED GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2); //enable pin for LED PF2 UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); IntMasterEnable(); //enable processor interrupts IntEnable(INT_UART0); //enable the UART interrupt UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT); //only enable RX and TX interrupts UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, UARTCharPut(UART0_BASE, 'E'); 'n'); 't'); 'e'); 'r'); ' '); 'T'); 'e'); 'x'); 't'); ':'); ' '); while (1) //let interrupt handler do the UART echo function { if (UARTCharsAvail(UART0_BASE)) UARTCharPut(UART0_BASE, UARTCharGet(UART0_BASE)); } } tiMDR.C /* * Timer.c * * Created on: Mar 18, 2016 * Author: Satu */ #include "../include.h" #include "Timer.h" static Color_Led Led_Status_Color=Yellow; static void Timer_ISR(void) { TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerIntClear(TIMER1_BASE, TIMER_TIMA_TIMEOUT); TimerIntClear(TIMER2_BASE, TIMER_TIMA_TIMEOUT); if(Led_Status_Color==Yellow) { TimerDisable(TIMER0_BASE, TIMER_A); TimerEnable(TIMER1_BASE, TIMER_A); GPIOPinWrite(LED_PORT, LED_RED|LED_GREEN|LED_YELLOW, LED_RED); Led_Status_Color=Red; } else if (Led_Status_Color==Red) { TimerDisable(TIMER1_BASE, TIMER_A); TimerEnable(TIMER2_BASE, TIMER_A); GPIOPinWrite(LED_PORT, LED_RED|LED_GREEN|LED_YELLOW, LED_GREEN); Led_Status_Color=Green; } else { TimerDisable(TIMER2_BASE, TIMER_A); TimerEnable(TIMER0_BASE, TIMER_A); GPIOPinWrite(LED_PORT, LED_RED|LED_GREEN|LED_YELLOW, LED_YELLOW); Led_Status_Color=Yellow; } } extern void Config_Timer(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); //VANG TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); TimerLoadSet(TIMER0_BASE, TIMER_A, 2*SysCtlClockGet()-1); TimerPrescaleSet(TIMER0_BASE, TIMER_A,200); TimerIntRegister(TIMER0_BASE, TIMER_A, &Timer_ISR); IntEnable(INT_TIMER0A); TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); //DO TimerConfigure(TIMER1_BASE, TIMER_CFG_PERIODIC); TimerLoadSet(TIMER1_BASE, TIMER_A, 6*SysCtlClockGet()-1); TimerPrescaleSet(TIMER1_BASE, TIMER_A,200); TimerIntRegister(TIMER1_BASE, TIMER_A, &Timer_ISR); IntEnable(INT_TIMER1A); TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2); //XANH TimerConfigure(TIMER2_BASE, TIMER_CFG_PERIODIC); TimerLoadSet(TIMER2_BASE, TIMER_A, 4*SysCtlClockGet()-1); TimerPrescaleSet(TIMER2_BASE, TIMER_A,200); TimerIntRegister(TIMER2_BASE, TIMER_A, &Timer_ISR); IntEnable(INT_TIMER2A); TimerIntEnable(TIMER2_BASE, TIMER_TIMA_TIMEOUT); //uint32_t num = TimerLoadGet(TIMER0_BASE, TIMER_A); TimerEnable(TIMER0_BASE, TIMER_A); } tIMDR.H /* * Timer.h * * Created on: Mar 18, 2016 * Author: Satu */ #ifndef TIMER_TIMER_H_ #define TIMER_TIMER_H_ typedef enum { Yellow=0, Red, Green }Color_Led; extern void Config_Timer(void); #endif /* TIMER_TIMER_H_ */ UART.C /* * UART.c * * Created on: Apr 15, 016 * */ Author: Satu #include "../include.h" #include "UART.h" static void UART_ISR(vvoid; { UARTIntClear(vUART0_BASD,UARTIntStatus(vUART0_BASD,true;;E int2 _t kE k=LUARTCharGet(vUART0_BASD;E } void Confi_UART(vvoid; { SysCtlPeripheralDnable(vSYSCTLE_PDRIPH_UART0;E SysCtlPeripheralDnable(vSYSCTLE_PDRIPH_GPIOA;E GPIOPinConfiure(vGPIO_PA0_U0RX;E GPIOPinConfiure(vGPIO_PA1_U0TX;E GPIOPinTypeUART(vGPIO_PORTA_BASD, GPIO_PINP_0 | GPIO_PINP_1;E UARTClockSourceSet(vUART0_BASD, UART_CLEOCK_SYSTDM;E UARTConfiSetDxpClk(vUART0_BASD, SysCtlClockGet(v;, 115 00,UART_CONPFIG_WLEDNP__ | UART_CONPFIG_STOP_ONPD |UART_CONPFIG_PAR_NPONPD;E UARTIntReiister(vUART0_BASD,&UART_ISR;E IntDnable(vINPT_UART0;E UARTIntDnable(vUART0_BASD, UART_INPT_RX | UART_INPT_RT;E } UART.H /* * UART.h * * Created on: Apr 15, 016 * Author: Satu */ #ifndef UART_UART_H_ #defne UART_UART_H_ extern void Confi_UART(vvoid;E #endif /* UART_UART_H_ */ Khi nhân chư thi k=LUartCharGet(vUART0_BASD;E Khi truyền chư thi UARTCHARPUT(vUART0_BASD,’D’; Main.c (vTimer; /* * main.c */ #include "include.h" void main(void) { SysCtlClockSet(SYSCTL_SYSDIV_20 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); //10Mhz 200/20 Config_LED(); Config_SWITCH(); //Config_ADC(); //Config_TempSensor(); Config_Timer(); IntMasterEnable(); while(1) { } }
- Xem thêm -

Tài liệu liên quan