3412|2

82

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

9b96c5+keil4+jlink [复制链接]

整个程序都是自己写的,是以前做的几个程序拼成的,应该看的出来的,一个是sendf,一个是主程序,两个部分分开运行都是ok的,但是和在一起,编译通过之后通过jtag发到lm3s9b96c5,貌似写不进去,不知道为什么,想了很久,请大师指教,下面是程序,关键请关注倒数几行的一个注释

#include "inc/hw_ssi.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/ssi.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#define BUFFER_SIZE   28
#include <math.h>
void delay(long int i)
{for(;i;i--);}
void cpuinit(void)

     SysCtlClockSet(SYSCTL_SYSDIV_6 | SYSCTL_USE_PLL |   SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
   }
void sendf(float b)
{
   char a[6][4];
   int f,n1,n2,n3,n4,n5,n6;
   int i;
   GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_0) ;
  GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_1) ;
   GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_2) ;
   GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_3) ;
   GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_2) ;
   f=(int)(b*1000);f=f/25;n1=f%16;f=f/16;  n2=f%16;f=f/16;n3=f%16;f=f/16;

   n4=f% 16;f=f/16;n5=f%16;n6=f/16;
   a[0][0]=n6%2;n6=n6/2;a[0][1]=n6%2;n6=n6/2;a[0][2]=n6%2;a[0][3]=n6/2;
   a[1][0]=n5%2;n5=n5/2;a[1][1]=n5%2;n5=n5/2;a[1][2]=n5%2;a[1][3]=n5/2;
   a[2][0]=n4%2;n4=n4/2;a[2][1]=n4%2;n4=n4/2;a[2][2]=n4%2;a[2][3]=n4/2;
   a[3][0]=n3%2;n3=n3/2;a[3][1]=n3%2;n3=n3/2;a[3][2]=n3%2;a[3][3]=n3/2;
   a[4][0]=n2%2;n2=n2/2;a[4][1]=n2%2;n2=n2/2;a[4][2]=n2%2;a[4][3]=n2/2;
   a[5][0]=n1%2;n1=n1/2;a[5][1]=n1%2;n1=n1/2;a[5][2]=n1%2;a[5][3]=n1/2;
   GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_2,0x00);
   for(i=0;i<6;i++)
   { 

     GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_0,a[0]);
      GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_1,a[1]<<1);
      GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_2,a[2]<<2);
     GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_3,a[3]<<3);  
      GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_2,0x04);
      delay(1000);
      GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_2,0x00);delay(1000);}
       delay(10000) ;

}
int main()
{
   float fref=55;    //被测频率
   int m=0,j,a,i,c=0,d;
   long int b=0;
   int temp[16],in[5];
    char aa[5][BUFFER_SIZE];
    cpuinit();


   sendf(fref);
   delay(1000000);
    for(m=0;m<16;m++)
     {
          temp[m]=0; 
      }
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_2) ;
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_3) ;
    GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,GPIO_PIN_4) ;
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_5) ;
    GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,GPIO_PIN_6) ;
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_7) ;
     GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE,GPIO_PIN_7) ; 
 
            d=0x2800;c=0;       //  d=0x2c80;
            while(abs(c-0x1daa)>0x60)
            {         
                 a=d;
                  for(m=0;m<16;m++)
                  {
                          temp[m]=a%2;
                           a=a/2 ;
                   }
                 GPIOPinWrite(GPIO_PORTG_BASE,GPIO_PIN_7,0x00);
                 for(m=15;m>-1;m--)
                  {
                             GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_5,(temp[m]<<5));
                            GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2,0x04);
                           GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2,0x00);
                    }
                  delay(50);
                  GPIOPinWrite(GPIO_PORTG_BASE,GPIO_PIN_7,0x80);
                    delay(500);
       
                    for(j=0;j<5;j++)
                    {
                         GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_3,0x08); 
                         GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_7,0x80);
                         GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_7,0x00);
                        GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_7,0x80); 
                        while(1)
                        {
                            if(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_6)==0)
                            {
                                 break; 
                             } 
                           } 
                        GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_3,0x00);
;;;;;;      /*         for(i = 0;i < BUFFER_SIZE;  i++)                                                        ///*  */之间为疑似错误区域,去掉程序可以导入cpu,不去掉则不能
                  {
                              GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2,0x04);
                   GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2,0x00);
                aa[j]=(char)(GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_4) ); 
                                          //第一组数据要抛弃,实际取的为28位中的后14位
                   }
                  GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_3,0x08);
                   delay(50);
      
                        for(i=0,b=0;i<14;i++)
                  {
                b=b*2+aa[j] ;
         }
;;;;;;                       in[j]=b/0x10;     */
                  }   
           for(i=1,c=0;i<5;i++)
           {
          c+=in;
     }
           c=c/4;
         if((c-0x2000)>0x60)
         {     
           d=d+0x20;
      }
         if((0x2000-c)>0x60)
         {
           d=d-0x20;
      }
         delay(2500) ;
  } 
}

最新回复

keil是4.xx的?  详情 回复 发表于 2012-1-18 10:55
 
点赞 关注

回复
举报

3404

帖子

6

TA的资源

裸片初长成(初级)

沙发
 
写不进去一般和程序没关系的,如果你是直接点的debug,编译正确之后还有一个链接的过程,这个过程出了错debug过程也就结束了,最好能把错误提示贴出来。还有一种情况是程序写进去了,但是运行按钮是灰的,没法点,这样一般是没有完成复位,点几次keil界面上的reset按钮就可以了。当然了,如果程序真的写不进去,很有可能是仿真器的连接问题,或者片子的JTAG接口锁住了,9B96没有仔细研究呢,不知道会不会锁住JTAG。
 
 

回复

299

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
keil是4.xx的?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表