⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 ATMEL AT91SAM9260的中段控制程序!
💻 C
字号:
/*-----------------------------------------------------------------------------
 *           ATMEL Microcontroller Software Support  -  ROUSSET  -
 *-----------------------------------------------------------------------------
 * DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *----------------------------------------------------------------------------
 * File Name           : Led.c
 * Object              :
 * Creation            : JPP   04/Sep/2006
 *----------------------------------------------------------------------------
*/
#include "project.h"
//*----------------------------------------------------------------------------
//* \fn    AT91F_PIO_Wait_input
//* \brief Wait end push
//*----------------------------------------------------------------------------
void AT91F_PIO_Wait_input (unsigned int pio)
{
    //* while pio is push wait
    while ( (AT91F_PIO_GetInput(AT91D_BASE_PIO_SW) & pio ) != pio );
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PIO_Init
//* \brief
//*----------------------------------------------------------------------------
void AT91F_PIO_Init (void)
{
    // First, enable the clock of the PIO
       AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91D_ID_PIO_LED ) ;
       AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91D_ID_PIO_SW ) ;

       AT91F_PIO_CfgInput(AT91D_BASE_PIO_SW,AT91B_BP_MASK);

    // then, we configure the PIO Lines corresponding to LED1 to LED2 to be
    // outputs. No need to set these pins to be driven by the PIO because it is
    // GPIO pins only.
       AT91F_PIO_CfgOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;

    // Clear the LED's. On the board we must apply a "1" to turn off LEDs
       AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
    // Clear the LED's. On the board we must apply a "0" to turn on LEDs
       AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, AT91B_LED_MASK ) ;
}

//*----------------------------------------------------------------------------
//* Function Name       : aic_software_interrupt
//* Object              : Software interrupt function
//*----------------------------------------------------------------------------
void AT91F_PIO_InvertLed ( unsigned int Led)
{
    //* Read the output state
    if ( (AT91F_PIO_GetInput(AT91D_BASE_PIO_LED) & Led ) == Led )
    {
        AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, Led );
    }
    else
    {
        AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, Led );
    }
}


//*--------------------------------------------------------------------------------------
//* Function Name       : AT91F_PIO_Wait
//* Object              : Software waiting loop
//*--------------------------------------------------------------------------------------
void AT91F_PIO_Wait ( unsigned int LedSpeed )
{//* Begin
    volatile unsigned int waiting_time ;

    for(waiting_time = 0; waiting_time < LedSpeed; waiting_time++) ;
}//* End

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -