[资料分享] DSP 的GPIO编程

fish001   2020-9-1 21:18 楼主

直接领略流水灯的乐趣吧!

/******************************************************************************/
/*  Copyright 2004 by SEED Electronic Technology LTD.                         */
/*  All rights reserved. SEED Electronic Technology LTD.                      */
/*  Restricted rights to use, duplicate or disclose this code are             */
/*  granted through contract.                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
 
 
 
#include <csl.h>
#include <csl_pll.h>
#include <csl_chip.h>
#include <csl_gpio.h>
 
 
 
#include <stdio.h>
 
void delay();

/*锁相环的设置*/
PLL_Config  myConfig      = {
  0,    //IAI: the PLL locks using the same process that was underway
                //before the idle mode was entered
  1,    //IOB: If the PLL indicates a break in the phase lock,
                //it switches to its bypass mode and restarts the PLL phase-locking                //sequence
  24,    //PLL multiply value; multiply 24 times
  1             //Divide by 2 PLL divide value; it can be either PLL divide value
                //(when PLL is enabled), or Bypass-mode divide value
                //(PLL in bypass mode, if PLL multiply value is set to 1)
};
 
 
 
void UserGpio(void)
{
    int val;
    
    /* Enable a pin as GPIO pin */
    GPIO_pinEnable (GPIO_PIN1);
    
    /* Write a value to a GPIO pin */
    GPIO_pinWrite(GPIO_PIN1, 2);
    
    /* Reads the value in a general purpose input pin */
    val = GPIO_pinRead(GPIO_PIN1);
    printf("Read GPIO_GPIO_PIN1 value = %d\n", val);
    //printf("GPIO register address %d\n", GPIO_ADDR(val));
    
    /* reads IOO and IO7 pin values */
    val=GPIO_pinRead (GPIO_PIN0| GPIO_PIN1);
 
    /* DiEnable a GPIO */
    GPIO_pinDisable (GPIO_PIN1);
    
    /* Writes value to non-parallel registers using GPIO_config */
    //GPIO_config( myConfig);
    
    
    
}
 
 
 
main()
{
    int i = 10;
    
    /*初始化CSL库*/    
    CSL_init();
    
    /*设置系统的运行速度为144MHz*/
    PLL_config(&myConfig);
    /*确定方向为输出*/
    GPIO_RSET(IODIR,0xFF);
    
    for(i = 0;i<0x0a;i++)
    {
         /*全亮*/
        GPIO_RSET(IODATA,0xff);
        delay();
           /*全灭*/
           GPIO_RSET(IODATA,0x0);
           delay();
    }
    /*循环闪烁*/   
       for(i = 10; i >= 0; i--)
       {
           GPIO_RSET(IODATA,0x1);
           delay();
        delay();
           GPIO_RSET(IODATA,0x2);
           delay();
        delay();
           GPIO_RSET(IODATA,0x4);
           delay();
        delay();
           GPIO_RSET(IODATA,0x8);
           delay();
        delay();
           GPIO_RSET(IODATA,0x10);
           delay();
        delay();
           GPIO_RSET(IODATA,0x40);
           delay();
        delay();
           GPIO_RSET(IODATA,0x80);
           delay();
           delay();    
       }
       
       UserGpio();              
}
 
// 延时函数
void delay()
{
    Uint32 j = 0,k = 0;
    for(j = 0;j<0x0c;j++)
    {
        for(k= 0;k<0xffff;k++)
        {}
    }
}

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复