设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 8036|回复: 5
打印 上一主题 下一主题

TM4C129定时器问题

[复制链接]

2

主题

7

帖子

32

积分

新手上路

Rank: 1

积分
32
跳转到指定楼层
楼主
swh267 发表于 2014-7-19 15:44:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int main(void)
{
        //char c;
        //unsigned int i;
        uint32_t sas,mmm;
        //const char TXdata[]="chushihuachenggong!";
        jtagWait();//·àÖ1JTAGê§D§
        clockInit();//ê±Öó3õê¼»ˉ
        uartInit();//UART3õê¼»ˉ
       
        SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1 );
        TimerConfigure(TIMER1_BASE,TIMER_CFG_PERIODIC);
        TimerLoadSet(TIMER1_BASE,TIMER_A,0xfafffaa);       
        TimerEnable(TIMER1_BASE, TIMER_A);
        sas=TimerValueGet(TIMER1_BASE,TIMER_A);
        mmm=TimerLoadGet(TIMER1_BASE,TIMER_A);
       
        while(1)
        {
                UARTCharPut(UART6_BASE,(int8_t)((mmm)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((mmm>>8)&0xff));

                UARTCharPut(UART6_BASE,(int8_t)((mmm>>16)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((mmm>>24)&0xff));
                SysCtlDelay(TheSysClock/3);       
                UARTCharPut(UART6_BASE,(int8_t)((sas)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((sas>>8)&0xff));

                UARTCharPut(UART6_BASE,(int8_t)((sas>>16)&0xff));
                UARTCharPut(UART6_BASE,(int8_t)((sas>>24)&0xff));
               
        }
        今天想调试一下TM4C129的定时器,然后用串口打印出装载值和定时器的当前计数值,可是发现打印出来的当前计数值是不变的一个个值,而且该值不等于装载值,很是郁闷,想向各位请教一下,问题出在哪里了?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
沙发
admin 发表于 2014-7-19 20:41:55 | 只看该作者
用没用定时器中断?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

32

积分

新手上路

Rank: 1

积分
32
板凳
 楼主| swh267 发表于 2014-7-19 22:59:38 | 只看该作者
没用中断,后来群里一个同学发现问题了,没有把这两个放到循环中去   sas=TimerValueGet(TIMER1_BASE,TIMER_A);mmm=TimerLoadGet(TIMER1_BASE,TIMER_A);,坛主,我想问一下,定时时长是怎么推算的,我设置主频是100MHz,32位定时器,最大装载值时,按上面那种方式来周期计时,计时周期是多少?我自己算的跟实际实验观察的感觉有出路
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
地板
admin 发表于 2014-7-20 20:39:05 | 只看该作者
swh267 发表于 2014-7-19 22:59
没用中断,后来群里一个同学发现问题了,没有把这两个放到循环中去   sas=TimerValueGet(TIMER1_BASE,TIMER ...

你使用的是周期定时器,在种模式中,Timer 都被配置成一个 32 位的递减计数器或者递增计数器,,而周期模式则可以周而复始地定时,除非被关闭。在计数到 0x00000000 时,在计数到 0x00000000 时或者预设值时,可以在软件的控制下触发中断或输出一个内部的单时钟周期脉冲信号。所有定时器肯定结合中断使用,你这是51单片机都没学过关
回复 支持 反对

使用道具 举报

2

主题

7

帖子

32

积分

新手上路

Rank: 1

积分
32
5#
 楼主| swh267 发表于 2014-7-20 20:58:40 | 只看该作者
admin 发表于 2014-7-20 20:39
你使用的是周期定时器,在种模式中,Timer 都被配置成一个 32 位的递减计数器或者递增计数器,,而周期模 ...

不一定要用中断,因为我只是用周期定时来作为一个系统记时而已,定时器已经调通了,用串口可以观测到定时器的值变化,说明定时器正常工作了,时间也计算出来了,还是很感谢坛主的指导
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
6#
admin 发表于 2014-7-20 21:10:27 | 只看该作者
swh267 发表于 2014-7-20 20:58
不一定要用中断,因为我只是用周期定时来作为一个系统记时而已,定时器已经调通了,用串口可以观测到定时 ...

系统计时用定时器RTC模式
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-11-23 01:36 , Processed in 0.152686 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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