Hi, friends!I'm a beginner in using the board, and I'm learning to use it.I expect to my code behaves like this:
- If the user press only the Switch 1, turn on LED 3,
- If the user press only the Switch 2, turn on LED 2,
- If the user press bot of them, turn on LED 4,
- If none of the switches are pressed, turn off all the LEDs
When I run the code and when I only TOUCH my finger but NOT PRESS the switch the expected LEDs turn on.When I PRESS THE SWITCH none of the LEDs turn on.What may cause this?Can u run this code on yout board?
Thank you :)
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); // set up the clock
uint32_t swData0, swData1;
// Enable the GPIO port that is used for the on-board switch(J) and LEDs(F).
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOJ) & !SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF) & !SysCtlPeripheralReady(SYSCTL_PERIPH_GPION))
{
}
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4); //LED4 //LED3
GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1); //LED2 //LED1
GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_0|GPIO_PIN_1); //SW0 //SW1
while(1)
{
swData0 = GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_0);
swData1 = GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_1);
if( (swData0 == GPIO_PIN_0) && (swData1 == GPIO_PIN_1)){
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0); //led4
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, 0x0);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1, 0x0);
}
else if((swData0 == GPIO_PIN_0) && (swData1 != GPIO_PIN_1)){
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4,GPIO_PIN_4); //led3
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0x0);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1, 0x0);
}
else if((swData0 != GPIO_PIN_0) && (swData1 == GPIO_PIN_1)){
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0,GPIO_PIN_0); //led2
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 0x0);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4, 0x0);
}
else{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4, 0x0);
GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1, 0x0);
}
}
#include <stdint.h> #include <stdbool.h> #include "inc/hw_memmap.h" #include "driverlib/debug.h" #include "driverlib/gpio.h" #include "driverlib/sysctl.h" #ifdef DEBUG void __error__(char *pcFilename, uint32_t ui32Line) { while(1); } #endif int main(void) { SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); // set up the clock uint32_t swData0, swData1; // Enable the GPIO port that is used for the on-board switch(J) and LEDs(F). SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPION); while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOJ) & !SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF) & !SysCtlPeripheralReady(SYSCTL_PERIPH_GPION)) { } GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4); //LED4 //LED3 GPIOPinTypeGPIOOutput(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1); //LED2 //LED1 GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_0|GPIO_PIN_1); //SW0 //SW1 while(1) { swData0 = GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_0); swData1 = GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_1); if( (swData0 == GPIO_PIN_0) && (swData1 == GPIO_PIN_1)){ GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0,GPIO_PIN_0); //led4 GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4, 0x0); GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1, 0x0); } else if((swData0 == GPIO_PIN_0) && (swData1 != GPIO_PIN_1)){ GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_4,GPIO_PIN_4); //led3 GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0x0); GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1, 0x0); } else if((swData0 != GPIO_PIN_0) && (swData1 == GPIO_PIN_1)){ GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0,GPIO_PIN_0); //led2 GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_1, 0x0); GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4, 0x0); } else{ GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0|GPIO_PIN_4, 0x0); GPIOPinWrite(GPIO_PORTN_BASE, GPIO_PIN_0|GPIO_PIN_1, 0x0); } } }
}