搜索
bottom↓
回复: 4

有谁在用IAR FOR ARM 6.10啊,根目录下的例子里的定时器有关的函数怎么使用啊???????????

[复制链接]

出0入0汤圆

发表于 2011-7-12 09:49:27 | 显示全部楼层 |阅读模式
如题,我正在用IAR FOR ARM 6.10学习LPC2132,IAR下2132的例子很多,几乎把2132所有的内部驱动都写了,但有的函数我还是不会用,有正在使用的

或已经会用的人吗,请指点一下或我们一起研究。。。。。

如:定时器的初始化函数,我一直没弄明白第二个参数怎么弄。。还有CTCR这几寄存器怎么一直没有设置,在周功的书上也没找到。。。



用自己写的程序好呢,还是用IAR自带的呢,请过来人指点

/*************************************************************************
* Function Name: TIMER_Init
* Parameters:  LPC_TimerChannel_t DevNum
*          unsigned int precision -- the timer precision (Unit: us), general setting is 10 us
* Return: int
*              0: success
*   non-zero: error number
* Description: Initialize Timer, Set the PR register that represent the precision of timer.
*
*************************************************************************/
int TIMER_Init(LPC_TimerChannel_t DevNum, unsigned long precision)
{
    int i;
    //all registers are set to 0;
    switch (DevNum)
    {
        case TIMER0:
                    // Set globe variable
                    Timer0Config.Precision = precision;
                    // PR = Precision(us) * Pclk
                    if(precision)
                    {
                        Timer0Config.Prescaler = (precision * SYS_GetFpclk()) / 1000000;
                    }
                    else
                    {
                        Timer0Config.Prescaler = 1;
                    }
                    for (i=0; i<CH_MAXNUM; ++i)
                    {
                        Timer0Config.MatchCH.Enable = false;
                        Timer0Config.MatchCH.Action = 0;
                        Timer0Config.MatchCH.TimeValue =0;
                        Timer0Config.MatchCH.Fnpr = NULL;
                        Timer0Config.MatchCH.FnprArg = (void *)0;

                        Timer0Config.CaptureCH.Enable = false;
                        Timer0Config.CaptureCH.TriggerType= 0;
                        Timer0Config.CaptureCH.EnableInt = 0;
                        Timer0Config.CaptureCH.Fnpr = NULL;
                        Timer0Config.CaptureCH.FnprArg = (void *)0;
                        Timer0Config.CaptureCH.CPValue= 0;

                        Timer0Config.ExtAction= DONOTHING;
                        Timer0Config.ExtBitValue= 0;
                    }
                    // Clear interrupts flags
                    T0IR=0xFF;
                    // Disable counting
                    T0TCR=0;
                    // Clear timer counter
                    T0TC=0;
                    // PR = Prescaler - 1
                    T0PR= Timer0Config.Prescaler - 1;
                    // Clear prescaler timer counter
                    T0PC=0;
                    // Reset Compare modules
                    T0MCR=0;
                    T0MR0=0;
                    T0MR1=0;
                    T0MR2=0;
                    T0MR3=0;
                    // Reset Capture modules
                    T0CCR=0;
                    // Reset External Compare module
                    T0EMR=0;
                    break;
        case TIMER1:
                    // Set globe variable
                    Timer1Config.Precision = precision;
                    // PR = Precision(us) * Pclk
                    if(precision)
                    {
                        Timer1Config.Prescaler = (precision * SYS_GetFpclk()) / 1000000;
                    }
                    else
                    {
                        Timer1Config.Prescaler = 1;
                    }
                    for (i=0; i<CH_MAXNUM; ++i)
                    {
                        Timer1Config.MatchCH.Enable = false;
                        Timer1Config.MatchCH.Action = 0;
                        Timer1Config.MatchCH.TimeValue =0;
                        Timer1Config.MatchCH.Fnpr = NULL;
                        Timer1Config.MatchCH.FnprArg = (void *)0;

                        Timer1Config.CaptureCH.Enable = false;
                        Timer1Config.CaptureCH.TriggerType= 0;
                        Timer1Config.CaptureCH.EnableInt = 0;
                        Timer1Config.CaptureCH.Fnpr = NULL;
                        Timer1Config.CaptureCH.FnprArg = (void *)0;
                        Timer1Config.CaptureCH.CPValue= 0;

                        Timer1Config.ExtAction= DONOTHING;
                        Timer1Config.ExtBitValue= 0;
                    }
                    // Clear interrupts flags
                    T1IR=0xFF;
                    // Disable counting
                    T1TCR=0;
                    // Clear timer counter
                    T1TC=0;
                    // PR = Prescaler - 1
                    T1PR=Timer1Config.Prescaler - 1;
                    // Clear prescaler timer counter
                    T1PC=0;
                    // Reset Compare modules
                    T1MCR=0;
                    T1MR0=0;
                    T1MR1=0;
                    T1MR2=0;
                    T1MR3=0;
                    // Reset Capture modules
                    T1CCR=0;
                    // Reset External Compare module
                    T1EMR=0;
                    break;
            default:
                    return 1;
    }
    return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-7-12 10:10:11 | 显示全部楼层
STM32的飘过

出0入0汤圆

发表于 2011-11-18 21:16:55 | 显示全部楼层
我用的也是LPC2132,仿照周立功里的程序,为啥每次到中断IRQEnable();时总出现错误啊,望高手指点呐.
ourdev_696589RM2YR4.txt(文件大小:3K) (原文件名:Timer0_Int.txt)

出0入0汤圆

发表于 2011-11-19 16:07:45 | 显示全部楼层
为何编译时出错在interrupt_function() ;
Error[Ta007]: Cannot call a __thumb function from arm mode 。ourdev_696798ST12EU.txt(文件大小:6K) (原文件名:TIMELED.txt)

出0入0汤圆

 楼主| 发表于 2011-11-19 20:38:35 | 显示全部楼层
汇报最终结果:放弃了iar目录下的定时器文件,自己按照周立功的写了一个

使用起来还行
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-18 04:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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