我的dsp的成长之路------此贴只赠给我自己

[复制链接]
楼主: meng219902
手机看帖
扫描二维码
随时随地手机跟帖
meng219902|  楼主 | 2012-5-2 20:20 | 显示全部楼层
14# nongfuxu
前辈们的话我会记住的,谢谢前辈们对我的支持

使用特权

评论回复
kekeke| | 2012-5-2 21:57 | 显示全部楼层
加油吧大家

使用特权

评论回复
kekeke| | 2012-5-2 21:57 | 显示全部楼层
另外谢谢楼主分享

使用特权

评论回复
meng219902|  楼主 | 2012-5-2 22:09 | 显示全部楼层
24# kekeke

谢什么啊 你们来看这个贴 就是对我的支持了  我应该谢谢你们呢

使用特权

评论回复
meng219902|  楼主 | 2012-5-2 22:24 | 显示全部楼层
我的错误是这样的, 我刚开始还以为是没有生成.out,我一直找,在build proj..(在工程名单击右键就看见了)就在那里瞎找,到后来我放弃了 找第二个错误,我也是瞎猫碰死耗子,看到ADC_cal有问题就找这个文件,到最后找到了,在系统文件.c那里,头文件那个声明文件我改没有改动(好像是不让改),然后我把系统文件.c中的ADC_cal给删了,编译错误就全没了,我发现是ADC_cal的问题,我就感觉到可能是我没有加ADC.h和.c的问题,我把那个文件都加上了,把删的文件还原了,在编译就好了, 希望你也是这样类似的问题[img][/img]
QQ截图20120502114942.png

使用特权

评论回复
meng219902|  楼主 | 2012-5-2 22:31 | 显示全部楼层
今天我还用我自己建立的工程 写了一个CPU中断, 说实话这是我照着书写的,我还是记不下来,感觉有点乱, 但是那些函数我是懂的,我也理解, 我就是想说CPU中断那个函数  我们需要“清位”比如ACK  还有以后的那些中断,要置位的,都要清位

使用特权

评论回复
meng219902|  楼主 | 2012-5-2 22:31 | 显示全部楼层
interrupt void cpu_timer0_ist(void)
{
        aa++;
        GpioDataRegs.GPADAT.bit.GPIO0=1;
        delay_loop();
        GpioDataRegs.GPADAT.bit.GPIO0=0;
        delay_loop();
        PieCtrlRegs.PIEACK.bit.ACK1=1;
        SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;
        SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;
}
后俩个是我今天上课看书看到的,其实我真正写的人程序没有他两个

使用特权

评论回复
meng219902|  楼主 | 2012-5-2 22:55 | 显示全部楼层
对不起 我本想给大家把CCS4.2传到网上来 分享一下 以为有个朋友管我要了,我想不止是他想,还有很多朋友想 但是。。。我给他传,太慢了,真的不行啊,希望他能理解我,有谁有好主意,把这个软件传上去的,请留言!

使用特权

评论回复
Horse_JD| | 2012-5-3 08:55 | 显示全部楼层
我现在就有点毛躁,连基本的入门都没入,就想着完成倒是的任务~~~~忙碌一圈发现自己什么都没学

使用特权

评论回复
jing4687007| | 2012-5-3 09:56 | 显示全部楼层
谢谢啊

使用特权

评论回复
爱之翼V| | 2012-5-3 11:04 | 显示全部楼层
楼主很不错的,加油,看好你哦

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 14:06 | 显示全部楼层
30# Horse_JD

一定要忍住!!一定要扎实!!!我说什么都没有 只有靠自己来控制~!!!

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 14:06 | 显示全部楼层
32# 爱之翼V

嗯 谢谢

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 14:35 | 显示全部楼层
今天,我书看的是SCI 但是程序是看的关于中断的,外部中断(外部中断的视频和书我早就看完了),第一个感觉就是隔了几天看,全忘了,这次看程序又复习了一遍。
   EALLOW;
   GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 15;
   GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL = 1;  
   EDIS;
这个程序是外部中断选择Gpio口的,外部中断1、2可以选择GPA的32个io口, 那么外部中断有多少个中断呢?我看得是8个,还有外部中断3~7和XINMI,外部中断3~7可选择GPB的32个IO口,而XINMI就跟外部中断1、2似的,但是默认的是GPIO0;
  学到这里我就有一个疑问,那外部中断可以同时选择一个IO口吗? 我的意思是外部中断1、2可以都选GPIO2吗?外部中断3~7可以选GPIO33吗

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 14:49 | 显示全部楼层
我才知道还有个外部中断寄存器 是在XIntruptRegs里面的,他的作用就这两个
XIntruptRegs.XINT1CR.bit.POLARITY = 0;      
   XIntruptRegs.XINT2CR.bit.POLARITY = 1;   //我用术语说不出来 我就用大白话说吧,就是POLARITY=0时那个IO口电平从1变到0,就会产生中断;   
=1时相反
=2时跟零一样
=3时 只要有跳变就产生中断   (注意:产生中断的前提是使能!!!我说的是=0;=1;=2;=3而不是单单的=3的时候,别看错了!)
   
   XIntruptRegs.XINT1CR.bit.ENABLE = 1;       //使能
   XIntruptRegs.XINT2CR.bit.ENABLE = 1;

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 14:51 | 显示全部楼层
这是我在外部中断和GPIO的头文件,找到的
QQ截图20120503144228.png
GPIO选择.png

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 21:47 | 显示全部楼层
今天晚上由于身体不适,所以没有继续学习,没有外部中断弄懂
#include"DSP28x_project.h"

interrupt void xint1_isr(void);
interrupt void xint2_isr(void);
Uint16 count1,count2;
void delay_loop(void)
{
        short i,n;
        for(i=0;i<100;i++)
                for(n=0;n<100;n++){}
}

void main(void)
{
        Uint16 temp1,temp2;
        InitSysCtrl();
        DINT;
        InitPieCtrl();
        IER=0x0000;
        IFR=0x0000;
        InitPieVectTable();
        EALLOW;
                PieVectTable.XINT1=&xint1_isr;
                PieVectTable.XINT2=&xint2_isr;
        EDIS;
        PieCtrlRegs.PIECTRL.bit.ENPIE=1;
        PieCtrlRegs.PIEIER1.bit.INTx4=1;
        PieCtrlRegs.PIEIER1.bit.INTx5=1;
        IER|=M_INT1;
        EINT;
       
        EALLOW;
                GpioCtrlRegs.GPAMUX1.all=0x0000;
                GpioCtrlRegs.GPADIR.all=0x000c;
        //        GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;
        //        GpioCtrlRegs.GPAMUX1.bit.GPIO3=0;
                GpioDataRegs.GPADAT.all=0x0004;
               
                GpioCtrlRegs.GPAQSEL1.bit.GPIO0=0;
                GpioCtrlRegs.GPAQSEL1.bit.GPIO1=2;
                GpioCtrlRegs.GPACTRL.bit.QUALPRD0=0xff;
        EDIS;
       
        EALLOW;
                GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL=0;
                GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL=1;
        EDIS;
       
        XIntruptRegs.XINT1CR.bit.POLARITY=0;
        XIntruptRegs.XINT2CR.bit.POLARITY=1;
        XIntruptRegs.XINT1CR.bit.ENABLE=1;
        XIntruptRegs.XINT2CR.bit.ENABLE=1;
       
        EALLOW;
                GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;
                GpioCtrlRegs.GPADIR.bit.GPIO4=1;
                GpioCtrlRegs.GPAMUX1.bit.GPIO5=0;
                GpioCtrlRegs.GPADIR.bit.GPIO5=1;
        EDIS;
        for(;;)
        {
                temp1=count1;
                temp2=count2;
                GpioDataRegs.GPADAT.bit.GPIO2=1;
                GpioDataRegs.GPADAT.bit.GPIO2=0;
                while(temp1==count1){}
                delay_loop();
                GpioDataRegs.GPADAT.bit.GPIO3=1;
                GpioDataRegs.GPADAT.bit.GPIO3=0;
                while(temp2==count2){}
                delay_loop();
                GpioDataRegs.GPADAT.bit.GPIO4=0;
                GpioDataRegs.GPADAT.bit.GPIO5=1;
        }
}

interrupt void xint1_isr(void)
{
        count1++;
        GpioDataRegs.GPADAT.bit.GPIO4=1;
        PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}

interrupt void xint2_isr(void)
{
        count2++;
        GpioDataRegs.GPADAT.bit.GPIO5=0;
        PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}

使用特权

评论回复
meng219902|  楼主 | 2012-5-3 21:56 | 显示全部楼层
这个程序是我照着写的 我感觉很多,但是一到while() 就停下来了 我知道一定是没有产生中断,为什么我让GPIO赋1然后再赋0  为什么就不产生中断呢?
   晚上我问了一下,老板,也看了一下他给的视频(在我还没有问他之前,这个视频我已经看过了,但是今天看,感觉上一次相当于没看 忘了我的板子还有一个产生外部跳变的按键)  老板说 最后不要用GPIO直接来1~0、0~1,如果我不心把GPIO都设为输出,那样会烧坏DSP的,在他说完这句话之后,我立刻打开我的CCS看了一下我写的程序,小惊~~
   我感觉不只是老板说的那样,对板子有伤害的问题 我写的程序应该没有错误,为什么没有产生中断呢,我猜很有可能是GPIO根本没有产生跳变!!!(只是个人意见还请前辈们指点)

使用特权

评论回复
ji7411| | 2012-5-4 14:54 | 显示全部楼层
楼主加油啊。,顶个!~一起努力

使用特权

评论回复
meng219902|  楼主 | 2012-5-4 19:50 | 显示全部楼层
40# ji7411

嗯 一起努力

使用特权

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

本版积分规则