打印
[技术问答]

新唐MCU的RTC?

[复制链接]
1971|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianxialongfei|  楼主 | 2015-7-17 18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,应用例程
ERRCODE DrvRTC_Open (S_DRVRTC_TIME_DATA_T *sPt)函数末尾死了,
.
.
outp32(DWR, (UINT32)sPt->u32cDayOfWeek);
    g_u32hiYear  = (sPt->u32Year - DRVRTC_YEAR2000) / 10;
    g_u32loYear  = (sPt->u32Year - DRVRTC_YEAR2000) % 10;
    g_u32hiMonth =  sPt->u32cMonth              / 10;
    g_u32loMonth =  sPt->u32cMonth              % 10;
    g_u32hiDay   =  sPt->u32cDay                / 10;
    g_u32loDay   =  sPt->u32cDay                % 10;
    u32Reg    = (g_u32hiYear << 20);
    u32Reg    |= (g_u32loYear << 16);
    u32Reg    |= (g_u32hiMonth << 12);
    u32Reg    |= (g_u32loMonth << 8);
    u32Reg    |= (g_u32hiDay << 4);
    u32Reg    |= g_u32loDay;
    g_u32Reg = u32Reg;
    outp32 (CLR, (UINT32)g_u32Reg);

    g_u32hiHour  = sPt->u32cHour / 10;
    g_u32loHour  = sPt->u32cHour % 10;
    g_u32hiMin   = sPt->u32cMinute / 10;
    g_u32loMin   = sPt->u32cMinute % 10;
    g_u32hiSec   = sPt->u32cSecond / 10;
    g_u32loSec   = sPt->u32cSecond % 10;
    u32Reg     = (g_u32hiHour << 20);
    u32Reg    |= (g_u32loHour << 16);
    u32Reg    |= (g_u32hiMin << 12);
    u32Reg    |= (g_u32loMin << 8);
    u32Reg    |= (g_u32hiSec << 4);
    u32Reg    |= g_u32loSec;
    g_u32Reg = u32Reg;
    outp32(TLR, (UINT32)g_u32Reg);
   
    u32Reg = inp32(TLR);
    while(u32Reg != (UINT32)g_u32Reg);//在这一句

我在OPEN前已经运行过CloseRTC函数。感觉像没有关成功RTC,
想问一下这还有那个没设置好?
   
沙发
Mancherstun| | 2015-7-18 21:35 | 只看该作者
具体的如何关闭RTC的呢?

使用特权

评论回复
板凳
598330983| | 2015-7-19 09:50 | 只看该作者
来个判断啊,看看到底关掉没,用while判断返回。

使用特权

评论回复
地板
mintspring| | 2015-7-19 09:52 | 只看该作者
楼上说的对啊,执行函数都会有个返回值,返回1,一般是表示成功,你判断一下,当不是1时候就一直等。

使用特权

评论回复
5
玛尼玛尼哄| | 2015-7-19 22:57 | 只看该作者
RTC的操作原来这样啊,以前没用过。

使用特权

评论回复
6
tianxialongfei|  楼主 | 2015-7-20 10:13 | 只看该作者
操作RTC前已经:
DrvRTC_Close();//关闭RTC;
while(DrvRTC_Close() != E_SUCCESS);//等待成功;

DrvAIC_SetCPSR(AIC_DISABLE_FIQ_IRQ);//关闭中断;       
DrvRTC_Init();//初始话;

依然有问题;

目前我是把        死等的屏蔽了
......
    outp32(TLR, (UINT32)g_u32Reg);
   
    u32Reg = inp32(TLR);
//不能成功
//  while(u32Reg != (UINT32)g_u32Reg);//在这一句

......
可以用..不过心有点虚!
.......
能确定是我RTC没关死就会有这个问题么?

使用特权

评论回复
7
侣行天下| | 2015-7-20 20:43 | 只看该作者
这些代码看着好复杂啊

使用特权

评论回复
8
风的样子| | 2015-7-21 12:50 | 只看该作者
单步调试一下,看着好像是初始化没有成功

使用特权

评论回复
9
598330983| | 2015-7-21 22:35 | 只看该作者
初始化要彻底,不然有问题。

使用特权

评论回复
10
734774645| | 2015-7-21 23:11 | 只看该作者
outp32 (CLR, (UINT32)g_u32Reg);
这些函数都够我学的了。

使用特权

评论回复
11
yiyigirl2014| | 2015-7-21 23:28 | 只看该作者
楼主去RTC的头文件看看有没有相应的操作。

使用特权

评论回复
12
643757107| | 2015-7-21 23:32 | 只看该作者
建议直接调用相关函数。

使用特权

评论回复
13
huxidong| | 2015-7-27 14:00 | 只看该作者
//DrvRTC_Close();关闭RTC;这句不要
直接
while(DrvRTC_Close() != E_SUCCESS) {
delay(10);

使用特权

评论回复
14
稳稳の幸福| | 2015-7-28 21:18 | 只看该作者
上面那个鞋的很有创意,判断,关彻底了搞

使用特权

评论回复
15
734774645| | 2015-7-28 22:51 | 只看该作者
好像是初始化没有成功

使用特权

评论回复
16
mintspring| | 2015-7-29 23:38 | 只看该作者
我来看看有没有大神发表神论

使用特权

评论回复
17
643757107| | 2015-7-30 10:31 | 只看该作者
风格各不相同,不同厂家提供的例程也不同,每个人自己写的风格也不同。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

23

帖子

0

粉丝