OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9410|回复: 10

RTC使能中断就死机问题?

[复制链接]

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
发表于 2013-5-23 16:57:09 | 显示全部楼层 |阅读模式
想动态显示时间,在裸机下都可以的,但是弄到有ucos-ii上后连初始化也过不了。
void RTC_ConfInt(void)
{
// RTC_TIME_Type* Set_Time_type;
//1.RTC模块初始化
RTC_Init(LPC_RTC);
//2.使能RTC
RTC_ResetClockTickCounter(LPC_RTC);
RTC_Cmd(LPC_RTC, ENABLE);
//3.设置时间
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_YEAR, 2013);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_MONTH, 5);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_DAYOFMONTH, 23);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_HOUR, 15);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_MINUTE, 45);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_SECOND, 0);
// Set_Time_type->YEAR  =2013;
// Set_Time_type->MONTH =5;
// Set_Time_type->DOM   =23;
// Set_Time_type->HOUR  =14;
// Set_Time_type->MIN   =46;
// Set_Time_type->SEC   =10;
// RTC_SetFullTime(LPC_RTC,Set_Time_type);
//4.RTC中断配置
RTC_CntIncrIntConfig (LPC_RTC, RTC_TIMETYPE_SECOND, ENABLE);
//5.使能RTC中断
NVIC_EnableIRQ(RTC_IRQn); //死在这里了

}相同程序在光测试RTC的时候是好的
努力做,耐心等
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-23 17:57:25 | 显示全部楼层
回复【楼主位】chenweigang:
---------------------------------
进中断服务函数了么?
中断服务函数有没有用delay?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-23 18:26:49 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
感谢原子哥回复,原子哥真心很热心,等这个项目做完,得分享点东西。以后身边朋友有买开发板的果断推荐原子哥的。马屁拍完了,说正事了。中断能进,到中断后我单步执行就到HardFault_Handler了
努力做,耐心等
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-23 18:27:02 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
忘了,没用delay啊
努力做,耐心等
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-23 18:35:34 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我本来在中断函数里用了这样的
typedef struct _TIME_TYPE        //时间类型定义
{
    uint8_t sec;     //秒
    uint8_t min;     //分
    uint8_t hour;    //时
    uint8_t dom;     //日
    uint8_t mon;     //月
    uint16_t year;  //年
}Time_Type;
Time_Type* Get_Time_type;
void RTC_IRQHandler(void)
{
//   OSIntEnter();
if (RTC_GetIntPending(LPC_RTC, RTC_INT_COUNTER_INCREASE))//计数器增量模块产生的中断
{
//  RTC_GetFullTime (LPC_RTC, Get_Time_type);
//  Get_Time_type->year= RTC_GetTime (LPC_RTC, RTC_TIMETYPE_YEAR);
//  Get_Time_type->mon= RTC_GetTime (LPC_RTC, RTC_TIMETYPE_MONTH);
//  Get_Time_type->dom= RTC_GetTime (LPC_RTC, RTC_TIMETYPE_DAYOFMONTH);
//  Get_Time_type->hour= RTC_GetTime (LPC_RTC, RTC_TIMETYPE_HOUR);
//  Get_Time_type->min= RTC_GetTime (LPC_RTC, RTC_TIMETYPE_MINUTE);
Get_Time_type->sec= RTC_GetTime (LPC_RTC, RTC_TIMETYPE_SECOND)

RTC_ClearIntPending(LPC_RTC, RTC_INT_COUNTER_INCREASE);//清中断
}


//   OSIntExit();

}这样就死机了 
我现在改成
u32 secvalue=RTC_GetTime (LPC_RTC, RTC_TIMETYPE_SECOND);就好了。。。中断里不能有结构体指针?
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-23 22:36:04 | 显示全部楼层
Time_Type* Get_Time_type;
你这定义的就是个指针,怎么会不死机...
指针只有4个字节,你得给他分配内存才可以啊!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2012-9-3
在线时间
4 小时
发表于 2013-5-23 23:23:47 | 显示全部楼层
回复【楼主位】chenweigang:
---------------------------------
个人觉得没必要用RTC了,还是乖乖的接个DS1302吧。RTC不是很好用。
打造完美
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-24 08:14:53 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
。。。我太2了额。。。好吧。。。看来基础不扎实。。原子哥再问个问题,ucgui里我想在某个界面(这个界面只是显示作用)里实时更新我从RTC里读出来的值,需要怎么做呢?在初始化完以后没有对屏幕操作了,也不能进回调,要如何更新它
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-24 09:57:24 | 显示全部楼层
回复【8楼】chenweigang:
---------------------------------
ucGUI不怎么熟悉...
你会在ucGUI显示数字,那么显示时间就不难了,几个数字拼起来就是时间了.时间去读RTC就可以得到.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-24 15:56:54 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
每个界面都要实时显示,又不能用回调,所以想问问有木有简单点的方法,现在实现是能实现,就是感觉太笨的方法了。这个发消息函数又不能用WM_SendMessageNoPara(hDialogClient, WM_INIT_DIALOG)发了这个后,没进回调
努力做,耐心等
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-11-25
在线时间
0 小时
发表于 2013-11-25 10:25:28 | 显示全部楼层
回复【7楼】Berlin:
---------------------------------
这个有什么说法?做的一个东西基于RTC,如果有问题就麻烦了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 02:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表