8535|2

21

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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

10芯积分

  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. }
复制代码


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


最新回复

最好列个流程图  详情 回复 发表于 2018-4-29 11:00
 
点赞 关注

回复
举报

21

帖子

0

TA的资源

一粒金砂(中级)

来自 2楼
 
非常诚恳的拜托看到这个问题的大佬能帮忙解答一下。
 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
最好列个流程图
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表