您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF533程序求助
本帖共有479个阅读者
发表帖子 发表投票 回复主题
BF533程序求助
阿幺加油(论坛新手)
阿幺加油
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:131
积分:5
注册时间:2015/4/17
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF533程序求助

#include <cdefBF533.h>

#define pDEVICE_OE    (volatile unsigned short *)0x20320000
#define pLED_DAT    (volatile unsigned short *)0x20340000

void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
    unsigned int new_PLL_CTL;    
    *pPLL_DIV = pssel;
    asm("ssync;");
    new_PLL_CTL = (pmsel & 0x3f) << 9;        
    *pSIC_IWR |= 0xffffffff;
    if (new_PLL_CTL != *pPLL_CTL)
    {
        *pPLL_CTL = new_PLL_CTL;
        asm("ssync;");
        asm("idle;");
    }
}

void Init_EBIU(void)
{
    *pEBIU_AMBCTL0    = 0x7bb07bb0;
    *pEBIU_AMBCTL1    = 0xffc07bb0;
    *pEBIU_AMGCTL    = 0x000f;
}

void Init_SDRAM(void)
{
    *pEBIU_SDRRC = 0x00000817;    
    *pEBIU_SDBCTL = 0x00000013;
    *pEBIU_SDGCTL = 0x0091998d;    
    ssync();
}

void init_PF0_OUT(void)
{

    *pFIO_DIR |= PF0;
}



void main(void)
{
    int i;
    
    Set_PLL(16,3);
    Init_EBIU();    
    Init_SDRAM();
    *pDEVICE_OE = 0xbf;
        
    init_PF0_OUT();
    while(1)
    {
        *pFIO_FLAG_S |= PF0;    //PF0脚置高
           *pFIO_FLAG_C |= PF0;    //PF0脚置低
         *pFIO_FLAG_D |= PF0;    //PF0脚置高
           *pFIO_FLAG_D &= ~PF0;    //PF0脚置低          
    
    }

}
这是程序我想软件调试,查看FIO_FLAG_D中的值应该怎么操作呢?*pFIO_FLAG_S |= PF0; 还有这个语句为什么实现了PFO脚置高?对这个编程也不太懂。。。。麻烦大家帮我解答一下,实在是菜鸟望谅解啊


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/4/17 11:39:46
阿幺加油(论坛新手)
阿幺加油
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:131
积分:5
注册时间:2015/4/17
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

因为我无法连接仿真器,所以就想软件看一下仿真结果


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/4/17 11:41:15
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

FIO_FLAG_D 是IO的数据寄存器,直接对这个寄存器写1或者0就可以 控制IO的高低。

另外BF533还有两个IO控制寄存器,pFIO_FLAG_S和pFIO_FLAG_C。

pFIO_FLAG_S是IO设置寄存器,这个寄存器只能写1,不能写0,当某一位写1时,对应IO拉高。写0时无法清除拉高的IO。

pFIO_FLAG_C是IO清除寄存器,这个寄存器只能写1,不能写0,当某一位写1时,对应IO变低,写0时无效。

这两个寄存器是相互配合使用的,例子代码是把这两种控制IO的方法都写了。实际上,直接配置FIO_FLAG_D就可以。

软件仿真,你只能打开寄存器列表下,找到PF相关寄存器,看运行时里面的值变化。



这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/4/19 9:13:27
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159265 Call, 1 Queries, Processed in 0.015625 second(s),