[TM4C1294NCPDT ]make the led blink continuously while pressing a switch if not make the led blink a fixed number of times

我与影子孤独终老i 提交于 2020-01-25 10:13:07

问题


The board in use is the TM4C1294NCPDT, the idea is that while the switch 1 is pressed the led blinks off and on continuously ( I understand that part) and in the moment the switch is not pressed begin to blink a fixed number if times,lets say 5, that's where I'm and I do not see how to state the condition when the switch its not pressed.

I did a flow chart and the code.
The flash led 1 or 2 are only tags to the instructions to turn on and off the led.

#include <stdbool.h>
#include <stdint.h>
#include "inc/tm4c1294ncpdt.h"

uint32_t i; //int 1
int main(void) {
    SYSCTL_RCGCGPIO_R=0X1100; // set clock portn
    i=SYSCTL_RCGCGPIO_R; // delay (more than 3 cycles)
    GPIO_PORTN_DIR_R=0X03;      //enable the GPIO pin for the LED-PN0, set the direction as output, and
    GPIO_PORTN_DEN_R=0X03;  //enable the GPIO pin for digital function
    GPIO_PORTJ_AHB_DIR_R=0;
    GPIO_PORTJ_AHB_DEN_R=0X03;
    GPIO_PORTJ_AHB_PUR_R=0X01;

    while(1){
        GPIO_PORTN_DATA_R &=~0X02; //turn led off
        while (GPIO_PORTJ_AHB_DATA_R & 0X01){
            GPIO_PORTN_DATA_R |=0X01; //turn led on
            SysCtlDelay(2666666);
            GPIO_PORTN_DATA_R &=~0X01; //turn led off again
            SysCtlDelay(2666666);
        }
        GPIO_PORTN_DATA_R |=0X02;
    }

}  

回答1:


#include <stdbool.h>
#include <stdint.h>
#include "inc/tm4c1294ncpdt.h"

uint32_t i,j; //int 1

int main(void) {
    SYSCTL_RCGCGPIO_R=0X1100; // set clock portn
    i=SYSCTL_RCGCGPIO_R; // delay (more than 3 cycles)
     j=0;
    GPIO_PORTN_DIR_R=0X03;      //enable the GPIO pin for the LED-PN0, set the direction as output, and
    GPIO_PORTN_DEN_R=0X03;  //enable the GPIO pin for digital function
    GPIO_PORTJ_AHB_DIR_R=0;
    GPIO_PORTJ_AHB_DEN_R=0X03;
    GPIO_PORTJ_AHB_PUR_R=0X01;

    while(1){
        GPIO_PORTN_DATA_R &=~0X02; //turn led off
        while (GPIO_PORTJ_AHB_DATA_R & 0X01){
            GPIO_PORTN_DATA_R |=0X01; //turn led on
            SysCtlDelay(2666666);
            GPIO_PORTN_DATA_R &=~0X01; //turn led off again
            SysCtlDelay(2666666);
        }
          for (j=0; i<5; i++)
                {
                    GPIO_PORTN_DATA_R |=0X01; //turn led on
                SysCtlDelay(2666666);
                GPIO_PORTN_DATA_R &=~0X01; //turn led off again
                SysCtlDelay(2666666)
                }                     
        GPIO_PORTN_DATA_R |=0X02;  //clear the interrupt flag before return
    }

}  


来源:https://stackoverflow.com/questions/46865607/tm4c1294ncpdt-make-the-led-blink-continuously-while-pressing-a-switch-if-not-m

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!