久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2765|回復: 1
打印 上一主題 下一主題
收起左側

新人求助,msp432p401r 在中斷后無法返回主程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:405280 發表于 2018-10-4 12:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各個test值是用來看程序運行到那一步,發現中斷后沒有回到delaySec,因為setYellow = 1之后應該進入delaySec中的if條件并且把test4的值改成1,可是在這一步就卡死了,test4的值葉沒有變


#include <stdint.h>
#include "..\inc\msp432p401r.h"

#define RED    0x01;
#define GREEN  0x02;
#define YELLOW 0x03;



// global variable visible in Watch window of debugger
// increments at least once per button press
volatile uint32_t FallingEdges = 0;
uint8_t isRed = 0;
uint8_t isGreen =0;
uint8_t isYellow =0;
uint8_t setYellow =0;
uint8_t setGreen =0;
int test1 = 0, test2=0, test3=0, test4 = 0, test5 =0, test6 = 0;

void EdgeCounter_Init(void){
        __ASM("CPSID I");
       
  FallingEdges = 0;                // initialize counter

  P1SEL0 &= ~0x12;
  P1SEL1 &= ~0x12;                 // configure P1.4 and P1.1 as GPIO
  P1DIR &= ~0x12;                  // make P1.4 and P1.1 in (built-in Button 1 and Button 2)
  P1REN |= 0x12;                   // enable pull resistors on P1.4 and P1.1
  P1OUT |= 0x12;                   // P1.4 and P1.1 are pull-up
  P1IES |= 0x12;                   // P1.4 and P1.1 are falling edge event
  P1IFG &= ~0x12;                  // clear flag4 and flag1 (reduce possibility of extra interrupt)
  P1IE |= 0x12;                    // arm interrupt on P1.4 and P1.1

  NVIC_IPR8 = (NVIC_IPR8&0x00FFFFFF)|0x40000000; // priority 2
  NVIC_ISER1 = 0x00000008;         // enable interrupt 35 in NVIC
  __ASM("CPSIE I");//EnableInterrupts();              // clear the I bit
}

void delay(void){
   uint32_t i,j,k;
         for(i=6000;i>0;i--){
                        for(j = 100; j>0; j--)
                             k = 5;
         }
}
void delaySec(uint8_t i){
  uint8_t j;
        for(j = i; j> 0; j--){
                test6 += 1;
                if(setYellow == 1){
                        test4 = 1;
                        return;
                  test5 = 1;}
                else
                delay();
        }
}

void redLight(void){
        isRed = 1;
        isGreen = 0;
        isYellow = 0;
}

void greenLight(void){
        isRed = 0;
        isGreen = 1;
        isYellow = 0;
}

void yellowLight(void){
        isRed = 0;
        isGreen = 0;
        isYellow = 1;
}

void PORT1_IRQHandler(void){
       
        if((P1IFG & 0x02)!= 0){
          if(isGreen == 1){
                P2OUT &= 0;      //clear P2OUT
                setYellow = 1;
                }}
  }


int main(void){

  EdgeCounter_Init();              // initialize P1.4 and P1.1 interrupts
  // initialize P1.0 and make it output (P1.0 built-in LED1)
  P1SEL0 &= ~0x01;
  P1SEL1 &= ~0x01;                 // configure built-in LED1 as GPIO
  P1DIR |= 0x01;                   // make built-in LED1 out
  P1OUT &= ~0x01;                  // LED1 = off
  // initialize P2.2-P2.0 and make them outputs (P2.2-P2.0 built-in RGB LEDs)
  P2SEL0 &= ~0x07;
  P2SEL1 &= ~0x07;                 // configure built-in RGB LEDs as GPIO
  P2DS |= 0x07;                    // make built-in RGB LEDs high drive strength
  P2DIR |= 0x07;                   // make built-in RGB LEDs out
  P2OUT &= ~0x07;                  // RGB = off

  while(1){
               
        start:                         P2OUT ^= GREEN;
                                         greenLight();
                                         delaySec(10);
                                         test1 = 1;
                                         if(setYellow == 1){
                                           test2 = 1;
                                                 goto yellow;
                                                 test3 = 1;
                                         }
                                         P2OUT &= 0;
        yellow:                                 P2OUT ^= YELLOW;
                                         setYellow = 0;
                                         yellowLight();
                                         delaySec(5);
                                         P2OUT &= 0;
        red:                                 P2OUT ^= RED;
                                         redLight();
                                         delaySec(5);
                                         P2OUT &= 0;
                                           goto start;
               
                                               
                                       
       
               
               
                //__ASM("WFI");                                               
        }


}       





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:634191 發表于 2021-7-1 12:39 | 只看該作者
hxd,現在解決了嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美在线观看视频 | 91亚洲国产| 欧美一区二区三区小说 | 国产精品一区二区在线 | 91精品国产91久久久久青草 | 亚洲天堂影院 | a在线免费观看视频 | 日韩在线视频一区 | 福利网站在线观看 | 69电影网| 91久久精品一区二区二区 | 精品日韩在线 | 国产精品揄拍一区二区 | 在线观看亚洲 | 国产日韩一区 | 成人区精品 | 久久久久国产 | 久久精品国产亚洲夜色av网站 | 在线视频亚洲 | 日韩午夜网站 | 91视频.| 中文字幕一区二区三区在线视频 | 午夜激情国产 | 亚洲精品9999久久久久 | av在线一区二区三区 | 欧美久久久久久久 | 久久久久久国产精品久久 | 91亚洲国产成人精品一区二三 | 国产精品国产精品国产专区不片 | 亚洲成网站 | 欧美国产一区二区 | 亚洲高清av在线 | 国内精品久久精品 | 日韩欧美中文字幕在线观看 | 久久网一区二区三区 | 一区二区在线 | 国产精品美女久久久久久免费 | 国产一区二区三区在线 | 有码一区 | 欧美综合在线视频 | 99reav|