您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 参考坛主的代码,写了一个BF518的代码,总是... 
本帖共有5646个阅读者
发表帖子 发表投票 回复主题
参考坛主的代码,写了一个BF518的代码,总是报错,没定义?请求高人指示!
weixong(论坛新手)
weixong
头衔:社区公民
帮派:无帮无派
帖数:4
金钱:145
积分:5
注册时间:2011/8/14
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
参考坛主的代码,写了一个BF518的代码,总是报错,没定义?请求高人指示!

输出显示:warning: Function does not have a full          prototype  ssync();

                 error: identifier "pFIO_DIR" is undefined  *pFIO_DIR |PF0;      ........

如果将   #include<cdefBF518.h> 改成 #include<cdefBF533.h> 就能正常通过!


问题::我查看cdefBF518.h确实没有定义pFIO_DIR(defBF51x_base.h也没有定义),为什么BF533对应的头文件有定义,而BF518对应的头文件没有定义呢?难道安若公司不重视BF518的开发?如果我要使用BF518,头文件包含pFIO_DIR定义,是哪个头文件呢,或是做我如何处理这样问题,请高人指示?




代码如下:----------------------------------------------------

#include<cdefBF518.h>
  
void Set_PLL(int pmsel,int pssel)//16,3:  分频系数
{
  int new_PLL_CTL;
  
  *pPLL_DIV=pssel;//--------------   fclk= VCO/3
  asm("ssync;");  //---------------  系统同步。系统分为system domain和core domain同步。
  
  new_PLL_CTL=(pmsel & 0x3f)<<9; //--设置PLL_CTL的MSEL[0-5],分频内核时钟系数
  
  *pSIC_IWR |=0xffffffff; //---------开中断使能
  if(new_PLL_CTL !=*pPLL_CTL)//------如果数值已经发生更改
  {
   *pPLL_CTL=new_PLL_CTL;
   asm("ssync;");
   asm("idle;"); //-------------- 空闲, 闲着的  
  }

}

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817; //SDRAM 刷新控制寄存器
*pEBIU_SDBCTL = 0x00000013;//---8BIT 32mBYTE  -Bank Control Register
*pEBIU_SDGCTL = 0x0091998d;//SDRAM 全局控制寄存器
ssync();              
}

void init_PF0_OUT(void)
{
*pFIO_DIR |PF0;
}
void main(void)
{  
  int i;
  Set_PLL(16,3);
    Init_SDRAM();//内存初始化
    init_PF0_OUT();//PF口初始化    

    while(1)
    {
  *pFIO_FLAG_S |=PF0;//配置高
  *pFIO_FLAG_C |=PF0;//配置低
  *pFIO_FLAG_D |=PF0;//配置高
  *pFIO_FLAG_D &=~PF0;//配置低  
    }
}



「该帖子被 weixong 在 2011-08-14 10:29:22 编辑过」

坚持+速度+行动=我的性格
等级:论坛新手 参考IP地址:*.*.*.*
2011/8/14 10:26:11
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

BF518的寄存器名称和BF533完全不同,所以你编译后会告诉你寄存器没有定义。

BF512的接口在使用的时候,要首先定义其功能,BF533则不需要定义。

你可以用帮助文件,搜索寄存器名称,找到该接口所有寄存器的命名和功能说明,然后看懂了再用。

给你一个512中断的IO的代码,你参考一下:



init_port()
{
int iar5 = *pSIC_IAR5;
int imask1 = *pSIC_IMASK0;

*pPORTG_FER   &= (~(PG6 | PG7 | PG8| PG9)); //PH4  时钟  PH5  数据  PH6 片选
*pPORTGIO_DIR  &= (~(PG6 | PG7 | PG8| PG9));
*pPORTGIO_INEN  |= PG6 | PG7 | PG8| PG9;



*pPORTGIO_EDGE |= PG6 | PG7 | PG8| PG9;;  /* edge sensitive */
*pPORTGIO_POLAR &= (~(PG6 | PG7 | PG8| PG9)); /* rising edge */
    *pPORTGIO_MASKA_SET |= PG6 | PG7 | PG8| PG9;/* enable pbs */

    /* port H interrupt A is bits 20-23 of IAR3, setup for IVG11 */
    iar5 |= 0x00000004;
iar5 &= 0xfffffff4;
    *pSIC_IAR5 = iar5;

    /* register ISR and enable port H interrupt A */
    register_handler(ik_ivg11, Pushbutton_ISR);
    imask1 = *pSIC_IMASK1;
    imask1 |= 0x00000100;
    *pSIC_IMASK1 = imask1;
}


EX_INTERRUPT_HANDLER(Pushbutton_ISR)
{
int pb_status = *pPORTGIO;

/* if PB1 pushed */
if ( 0x0040 == (pb_status & PG6) )
{
  *pPORTGIO_CLEAR = PG6;
  printf("PB is PG6!\n");
}
  if ( 0x0080 == (pb_status & PG7) )
{
  *pPORTGIO_CLEAR = PG7;
  printf("PB is PG7!\n");
}

  if ( 0x0100 == (pb_status & PG8) )
{
  *pPORTGIO_CLEAR = PG8;
  printf("PB is PG8!\n");
}

  if ( 0x0200 == (pb_status & PG9) )
{
  *pPORTGIO_CLEAR = PG9;
  printf("PB is PG9!\n");
}

}

main(void)
{
unsigned short data;

  Set_PLL(16,4);
    Init_EBIU();
    Init_SDRAM();
    init_port();
    while(1);  

}


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/8/14 18:40:29
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

你的帖子发到uC专区去了,我看你的帖子问题是Blackfin新手问题,把你的帖子转到Blackfin新手区。


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2011/8/14 18:55:17
weixong(论坛新手)
weixong
头衔:社区公民
帮派:无帮无派
帖数:4
金钱:145
积分:5
注册时间:2011/8/14
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

好的,非常感情你们的回答!


坚持+速度+行动=我的性格
等级:论坛新手 参考IP地址:*.*.*.*
2011/8/15 9:48:13
weixong(论坛新手)
weixong
头衔:社区公民
帮派:无帮无派
帖数:4
金钱:145
积分:5
注册时间:2011/8/14
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

     是的,我查看了。BF518需要先定义功能,但是BF518中类似定义“*pPORTG_FER  ”,“*pPORTGIO_DIR ”的头文件,在哪里呢?我查了一个上午都没找到啊?


坚持+速度+行动=我的性格
等级:论坛新手 参考IP地址:*.*.*.*
2011/8/15 11:45:47
ppsca(论坛新手)
ppsca
头衔:社区公民
帮派:无帮无派
帖数:43
金钱:305
积分:41
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

路径:Analog Devices\VisualDSP 5.0\Blackfin\include

在 defBF51x_base.h  和   cdefBF51x_base.h  文件中。

学会使用windows自带的文件名搜索功能和文件内容搜索功能,会节省很多个一上午。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/8/15 15:50:38
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

没事,这是一个学习的过程,宝贵的学习经验


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2011/8/15 21:54:13
weixong(论坛新手)
weixong
头衔:社区公民
帮派:无帮无派
帖数:4
金钱:145
积分:5
注册时间:2011/8/14
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

大侠,你说的这个找法,我就是这样找的。怪我眼睛看走眼了,defBF51x_base.h  和 cdefBF51x_base.h我没区分开。我以为只有一个defBF51x_base.h 。找死都没找到IO的定义! 我看了几遍你给我的回帖,我还以你把头文件写重复了。 谢谢你,你给我的回帖,大侠!下次眼睛要注意了,defBF51x 和cdefBF51x是不样的!


坚持+速度+行动=我的性格
等级:论坛新手 参考IP地址:*.*.*.*
2011/8/15 22:28:58
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

悲剧。。。


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2011/8/16 0:36:50
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154169 Call, 1 Queries, Processed in 0.031250 second(s),