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

📄 example1.c

📁 jennic jn5139模块使用io引脚作为中断线的代码
💻 C
字号:
/**************************************************************************** * * MODULE:             example1.c * * COMPONENT:          $RCSfile: $ * * VERSION:            $Name: $ * * REVISION:           $Revision: $ * * DATED:              $Date: $ * * STATUS:             $State: Exp $ * * AUTHOR:             Mozammul Ahmed * * DESCRIPTION: * * LAST MODIFIED BY:   $Author: $ *                     $Modtime: $ * ****************************************************************************
 *
 * This software is owned by Jennic and/or its supplier and is protected
 * under applicable copyright laws. All rights are reserved. We grant You,
 * and any third parties, a license to use this software solely and
 * exclusively on Jennic products. You, and any third parties must reproduce
 * the copyright and warranty notice and any other legend of ownership on each
 * copy or partial copy of the software.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS". JENNIC MAKES NO WARRANTIES, WHETHER
 * EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
 * ACCURACY OR LACK OF NEGLIGENCE. JENNIC SHALL NOT, IN ANY CIRCUMSTANCES,
 * BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, SPECIAL,
 * INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON WHATSOEVER.
 *
 * Copyright Jennic Ltd 2005, 2006. All rights reserved
 *
 ****************************************************************************/
/****************************************************************************//***        Include files                                                 ***//****************************************************************************/#include <jendefs.h>#include <AppHardwareApi.h>#include <AppQueueApi.h>
/****************************************************************************//***        Macro Definitions                                             ***//****************************************************************************//****************************************************************************//***        Type Definitions                                              ***//****************************************************************************//****************************************************************************//***        Local Function Prototypes                                     ***//****************************************************************************/
PRIVATE void vInitSystem(void);
PRIVATE void vProcessEventQueues(void);
PRIVATE void vProcessIncomingHwEvent(AppQApiHwInd_s *psAHI_Ind);
/****************************************************************************//***        Exported Variables                                            ***//****************************************************************************//****************************************************************************//***        Local Variables                                               ***//****************************************************************************/
PRIVATE bool_t bToggle = TRUE;
/****************************************************************************//***        Exported Functions                                            ***//****************************************************************************//**************************************************************************** * * NAME: AppColdStart * * DESCRIPTION: * Entry point for application from boot loader. Initialises system and runs * main loop. * * RETURNS: * Never returns. * ****************************************************************************/PUBLIC void AppColdStart(void){
    vInitSystem();
    while (1)    {
        /* process any events that occurs */        vProcessEventQueues();    }}/**************************************************************************** * * NAME: AppWarmStart * * DESCRIPTION: * Entry point for application from boot loader. Simply jumps to AppColdStart * as, in this instance, application will never warm start. * * RETURNS: * Never returns. * ****************************************************************************/PUBLIC void AppWarmStart(void){    AppColdStart();}/****************************************************************************//***        Local Functions                                               ***//****************************************************************************/
/**************************************************************************** * * NAME: vInitSystem * * DESCRIPTION: * * RETURNS: * void * ****************************************************************************/PRIVATE void vInitSystem(void){
    /* Setup interface to MAC */
    u32AppQApiInit(NULL, NULL, NULL);    u32AHI_Init();

    /* Set SW1(dio9) to input and LED1(dio14) to output */
    vAHI_DioSetDirection(E_AHI_DIO9_INT, 0);
    vAHI_DioSetDirection(0, E_AHI_DIO14_INT);

    /* enable pullups on all inputs/unused pins  */
    vAHI_DioSetPullup(!E_AHI_DIO14_INT, E_AHI_DIO14_INT);

    /* turn LED off */
    vAHI_DioSetOutput(E_AHI_DIO14_INT, 0);

    /* set interrupt for DIO9 to occur on button release - rising edge */
    vAHI_DioInterruptEdge(E_AHI_DIO9_INT, 0);

    /* enable interrupt for DIO9 */
    vAHI_DioInterruptEnable(E_AHI_DIO9_INT, 0);
}/**************************************************************************** * * NAME: vProcessEventQueues * * DESCRIPTION: * Check each of the three event queues and process and items found. * * PARAMETERS:      Name            RW  Usage * None. * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PRIVATE void vProcessEventQueues(void){    MAC_MlmeDcfmInd_s *psMlmeInd;    MAC_McpsDcfmInd_s *psMcpsInd;    AppQApiHwInd_s    *psAHI_Ind;    /* Check for anything on the MCPS upward queue */    do    {        psMcpsInd = psAppQApiReadMcpsInd();        if (psMcpsInd != NULL)        {            /* normally a user provided function such as
               vProcessIncomingMcps(psMcpsInd) would be called here  */            vAppQApiReturnMcpsIndBuffer(psMcpsInd);        }    } while (psMcpsInd != NULL);    /* Check for anything on the MLME upward queue */    do    {        psMlmeInd = psAppQApiReadMlmeInd();        if (psMlmeInd != NULL)        {            /* normally a user provided function such as
               vProcessIncomingMlme(psMlmeInd) would be called here  */            vAppQApiReturnMlmeIndBuffer(psMlmeInd);        }    } while (psMlmeInd != NULL);    /* Check for anything on the AHI upward queue */    do    {        psAHI_Ind = psAppQApiReadHwInd();        if (psAHI_Ind != NULL)        {            vProcessIncomingHwEvent(psAHI_Ind);            vAppQApiReturnHwIndBuffer(psAHI_Ind);        }    } while (psAHI_Ind != NULL);}/**************************************************************************** * * NAME: vProcessIncomingHwEvent * * DESCRIPTION: * Process any hardware events. * * PARAMETERS:      Name            RW  Usage *                  psAHI_Ind * * RETURNS: * None. * * NOTES: * None. ****************************************************************************/PRIVATE void vProcessIncomingHwEvent(AppQApiHwInd_s *psAHI_Ind){    /* Check to see if hardware indication was from DIO9 */
    if ((psAHI_Ind->u32DeviceId == E_AHI_DEVICE_SYSCTRL)
        && (psAHI_Ind->u32ItemBitmap & E_AHI_DIO9_INT))
    {
        if(bToggle)
        {
            /* drive DIO14 LOW */
            vAHI_DioSetOutput(0, E_AHI_DIO14_INT);
        }
        else
        {
            /* drive DIO14 HIGH */
            vAHI_DioSetOutput(E_AHI_DIO14_INT, 0);
        }

        bToggle = !bToggle;
    }
}/****************************************************************************//***        END OF FILE                                                   ***//****************************************************************************/

⌨️ 快捷键说明

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