本人在用msp432设计一个实时时钟,但是程序写好以后无法达到预期,希望各位高手帮...

2019-03-23 22:27发布


  1. #include "msp432p401r.h"
  2. #include "oled.h"
  3. void main(void)
  4. {
  5.        
  6.     WDTCTL = WDTPW | WDTHOLD;           // Stop watchdog timer

  7.     //Terminate all remaining pins on the device
  8.         P1DIR|=0XFF;P1OUT=0;
  9.         P2DIR|=0XFF;P2OUT=0;
  10.         P3DIR|=0XFF;P2OUT=0;
  11.         P4DIR|=0XFF;P2OUT=0;
  12.         P5DIR|=0XFF;P2OUT=0;
  13.         P6DIR|=0XFF;P2OUT=0;
  14.         P7DIR|=0XFF;P2OUT=0;
  15.         P8DIR|=0XFF;P2OUT=0;
  16.         P9DIR|=0XFF;P2OUT=0;
  17.         P10DIR|=0XFF;P2OUT=0;

  18.         // Configure Port J
  19.         PJDIR|=(BIT2+BIT3);PJOUT&=~(BIT2+BIT3);
  20.         PJSEL0|=BIT0+BIT1;//引脚设置为LFXT
  21.         CSKEY=CSKEY_VAL;//解锁CS寄存器操作
  22.         CSCTL2|=LFXT_EN;//打开LFXT
  23.         do
  24.         {
  25.                 CSCLRIFG|=CLR_DCORIFG |CLR_HFXTIFG|CLR_LFXTIFG|CLR_FCNTLFIFG;//清除中断标志位
  26.                 SYSCTL_NMI_CTLSTAT&=~SYSCTL_NMI_CTLSTAT_CS_SRC;//使能CS中断作为NMI
  27.         }while((SYSCTL_NMI_CTLSTAT|SYSCTL_NMI_CTLSTAT_CS_FLG)&&(CSIFG&LFXTIFG));
  28.         CSCTL1&=~(SELA_M)|SELA_0;//选择ACLK为LFXTCLK
  29.         CSKEY=0;//锁定CS模块
  30.         c=CS_getBCLK();
  31.         //配置RTC
  32.         RTCCTL0=RTCKEY;//解锁RTC+实时时钟时间事件中断启用
  33.         RTCCTL13=RTCHOLD+RTCMODE+RTCBCD+RTCTEV_0+ RTCRDYIE;//停止日历模式以便设置+日历模式+BCD模式+实时时钟事件(分钟)+ 使能读取中断
  34.         //时钟初始化
  35.         RTCYEAR=0X2016;
  36.         RTCDATE=(0X4<<MONTH_OFS)|(0x05|DAY_OFS);//month=4+day=5
  37.         RTCTIM1=(0X01<<DAYOFWEEK_OFS)|(0X10<<HOURS_OFS);//DAY OF WEEK=1 + HOUR=10
  38.         RTCTIM0=(0X32<<MINUTES_OFS)|(0X45<<SECONDS_OFS);//minute=0x32  +  second=0x45
  39.         RTCCTL13&=~RTCHOLD;//开启RTC
  40.         RTCCTL0&=~RTCKEY;//关闭RTC

  41.         //初始化oled
  42.         OLED_Init();
  43.         OLED_ShowNum(60,4,10,2,16);
  44.         __enable_irq();
  45.         NVIC_ISER0 =1<<((RTC_C_IRQn)&31);//RTC中断
  46.         SCB_SCR|=SCB_SCR_SLEEPONEXIT;//从中断回来时睡眠
  47.         while(1)
  48.         {
  49.                 __wfi();
  50.         }
  51. }
  52. void RTC_C_IRQHandler(void)
  53. {
  54.         if(RTCCTL0&RTCRDYIFG)
  55.         {
  56.                 a=RTCSEC;
  57.                 OLED_ShowNum(60,4,RTCSEC,2,16);
  58.         }
  59. }
复制代码

问题:这段代码根本无法进入中断,由于第一次使用中断,还不太会用,实在不知道哪出错了。试验过官方提供代码,但是还是感觉布恩那个正常运行。这个问题比较急,希望看见这个问题的各位大佬都能帮忙解决一下小弟的问题。谢谢了


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
sanhuasr
2019-03-24 09:44
< :TI_MSP430_内容页_SA7 --> 最好列个流程图

一周热门 更多>

相关问题

    相关文章