[TM4C1294NCPDT]在按下开关的同时使LED连续闪烁,如果没有使LED闪烁固定次数

时间:2017-10-21 16:45:47

标签: c arm texas-instruments

正在使用的主板是TM4C1294NCPDT,我们的想法是,当按下开关1时,LED连续闪烁(我明白该部分)并且在没有按下开关的瞬间开始闪烁固定的数字,如果时间,让我们说5,那就是我在哪里,而且我没有看到如何在没有按下开关时说明条件。

我做了一个流程图和代码。 enter image description here
闪光灯1或2只是打开和关闭指令的标签 领导。

#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 个答案:

答案 0 :(得分:0)

#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
    }

}