搜索
bottom↓
回复: 0

在学习EASYARM2103时候遇到关于定时器的问题

[复制链接]

出0入0汤圆

发表于 2012-4-21 17:09:26 | 显示全部楼层 |阅读模式
本帖最后由 mdq123 于 2012-4-21 17:34 编辑

#include "config.h"

uint8 find = 2;
uint32 commentyin[10] = {0x03f0,0x060, 0x05b0, 0x04f0, 0x0660, 0x06d0, 0x07d0, 0x0270, 0x07f0, 0x06f0};

#define led 1<<17

void delay(uint32 n);

//void init_zhongduan();


void init_IO()
{
        PINSEL0 = 0X0000;
        IODIR = 0XffFF0;
        IOCLR = 0XffFF0;
}

void  __irq Timer0ISR (void)
{

    find++;
    if(find == 10)
    {
            find = 0;
    }
   
    init_IO();
                                                   
    T0IR = 0x01;                                                        /*  清除中断标志                */
    VICVectAddr = 0x00;                                                 /*  中断向量结束                */
}

/*********************************************************************************************************
** Function name:       Timer0Init
** Descriptions:        定时器0初始化
** input parameters:    无
** ouput parameters:    无
** Returned value:      无
*********************************************************************************************************/
void  Timer0Init(void)
{       
    T0TCR  = 0x02;                                                      /*  定时器0复位                 */
    T0PR   = 0;                                                                                        /*  不设时钟分频                */
    T0MCR  = 0x03;                                                                                /*  匹配后复位TC,并产生中断    */
    T0MR0  = Fpclk;                                                 /*  设置0.5秒匹配值             */
    T0IR   = 0x01;                                                      /*  清除中断标志                */
    T0TCR  = 0x01;                                                                                /*  启动定时器0                 */
}

void init_zhongduan()
{
        IRQEnable();
    VICIntSelect = VICIntSelect & (~(1 << 4));                                /*  定时器0分配为IRQ中断        */
    VICVectCntl0 = 0x20 | 4;                                                            /*  定时器0分配为向量IRQ通道0   */
    VICVectAddr0 = (uint32) Timer0ISR;                                            /*  分配中断服务程序地址        */
    VICIntEnable = 1 << 4;                                                                /*  定时器0中断使能             */
}


int main (void)
{// add user source code
       

        init_IO();
        Timer0Init();
        init_zhongduan();
       
       
        while(1)
        {               
                //init_IO();
                IOSET = commentyin[find];
                //IO0SET = commentyin[find];
                //delay(300);       
        }
    return 0;
}

void delay(uint32 n)
{
        uint32 i;
        for(;n>0;n--)
        {
                for(i = 0;i<100;i++)
                {
                }
        }
}
出定时中断之后,find的值变了,但是在硬件失误上显示不正常

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

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

本版积分规则

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

GMT+8, 2024-8-26 11:07

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

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