This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2530:如何配置 LED

Guru**** 1753810 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/998175/cc2530-how-do-i-configure-leds

器件型号:CC2530
主题中讨论的其他器件:CC2592CC2590

大家好、  

我正在使用我的定制板(基于光开关项目的 ZStack 1.2)、我对 LED 配置有几个疑问、我认为 LED1和 LED3上的配置错误。 此时、只有 LED2 (连接状态)工作良好。 下面我介绍了树形 LED:

1 - D1 -电路状态(开/关)

2 - D2 - 电路状态(开/关)

3 - D3 -连接状态、它´s 根据 ZDapp.c 工作  

我在我的应用文件中使用 LED1和 LED3来表示 zclMyAPP_OnOffC1 == LIGHT_ON /LIGHT_OFF 或   zclMyAPP_OnOffC2 =LIGHT_ON 或 /LIGHT_OFF、我直接使用 P0端口进行了变通。  

请、有人可以帮助配置它吗?

我已在 hal_board_cfg.h 上设置这些配置:

 LED1 (P0_0) - D1、

LED2 (P1_1) - D3  

LED3 (P0_5) - D2


我的电气 LED 接口电路:

我已经在我的定制板上设置了这些配置、如下所述:

在我的应用中、我为端口 P0_0和 P0_5设置了 P0 SEL 和 P0 DIR:

    
    Profile 1 (EP 1)
    P0SEL &= (~BV(0)); // LED GREEN CIRC. 1
    P0DIR |= (BV(0)); 
    
    Profie 2 (EP 2)
    P0SEL &= (~BV(5)); // LED GREEN CIRC 2
	P0DIR |= (BV(5)); 

On_board_cfg.h 端口定义:

/* 1 - Green D1 - Circuit 1 */
  #define LED1_BV           BV(0)
  #define LED1_SBIT         P0_0
  #define LED1_DDR          P0DIR
  #define LED1_POLARITY     ACTIVE_LOW
  
  /* 2 - Green D2 - Circuit 2 */
  #define LED3_BV           BV(5)
  #define LED3_SBIT         P0_5 
  #define LED3_DDR          P0DIR
  #define LED3_POLARITY     ACTIVE_LOW
  
  /* 3 - Red - D3 - Attaching Status LED*/
  #define LED2_BV           BV(1) 
  #define LED2_SBIT         P1_1
  #define LED2_DDR          P1DIR
  #define LED2_POLARITY     ACTIVE_HIGH

On_bord_cfg.h LED 配置:

/* ----------- LED's ---------- */
#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && \
    !defined (HAL_PA_LNA_CC2590) && !defined (HAL_PA_LNA_SE2431L) && \
    !defined (HAL_PA_LNA_CC2592)

  #define HAL_TURN_OFF_LED1()       st( LED1_SBIT = LED1_POLARITY (1); )
  #define HAL_TURN_OFF_LED2()       st( LED2_SBIT = LED2_POLARITY (0); )
  #define HAL_TURN_OFF_LED3()       st( LED3_SBIT = LED3_POLARITY (1); )

  #define HAL_TURN_ON_LED1()        st( LED1_SBIT = LED1_POLARITY (0); )
  #define HAL_TURN_ON_LED2()        st( LED2_SBIT = LED2_POLARITY (1); )
  #define HAL_TURN_ON_LED3()        st( LED3_SBIT = LED3_POLARITY (0); )

  #define HAL_TOGGLE_LED1()         st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )
  #define HAL_TOGGLE_LED2()         st( if (LED2_SBIT) { LED2_SBIT = 0; } else { LED2_SBIT = 1;} )
  #define HAL_TOGGLE_LED3()         st( if (LED3_SBIT) { LED3_SBIT = 0; } else { LED3_SBIT = 1;} )

  #define HAL_STATE_LED1()          (LED1_POLARITY (LED1_SBIT))
  #define HAL_STATE_LED2()          (LED2_POLARITY (LED2_SBIT))
  #define HAL_STATE_LED3()          (LED3_POLARITY (LED3_SBIT))
      
#elif defined (HAL_PA_LNA_SE2431L) || defined (HAL_PA_LNA_CC2592)

#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || \
      defined (HAL_PA_LNA_CC2590)
  #define HAL_TURN_OFF_LED1()       st( LED1_SBIT = LED1_POLARITY (1); )
  #define HAL_TURN_OFF_LED2()       st( LED2_SBIT = LED2_POLARITY (0); )
  #define HAL_TURN_OFF_LED3()       st( LED3_SBIT = LED3_POLARITY (1); )

  #define HAL_TURN_ON_LED1()        st( LED1_SBIT = LED1_POLARITY (0); )
  #define HAL_TURN_ON_LED2()        st( LED2_SBIT = LED2_POLARITY (1); )
  #define HAL_TURN_ON_LED3()        st( LED3_SBIT = LED3_POLARITY (0); )

  #define HAL_TOGGLE_LED1()         st( if (LED1_SBIT) { LED1_SBIT = 0; } else { LED1_SBIT = 1;} )
  #define HAL_TOGGLE_LED2()         st( if (LED2_SBIT) { LED2_SBIT = 0; } else { LED2_SBIT = 1;} )
  #define HAL_TOGGLE_LED3()         st( if (LED3_SBIT) { LED3_SBIT = 0; } else { LED3_SBIT = 1;} )

  #define HAL_STATE_LED1()          (LED1_POLARITY (LED1_SBIT))
  #define HAL_STATE_LED2()          (LED2_POLARITY (LED2_SBIT))
  #define HAL_STATE_LED3()          (LED3_POLARITY (LED3_SBIT))

#endif

您能看到随附的我的 on_board_cfg.h

e2e.ti.com/.../hal_5F00_board_5F00_cfg.h

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否在 项目中定义了 HAL_Board_CC2530EB_REV17?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Yk 先生:

    是的、我已经在  IAR 编译器选项中包含 HAL_Board_CC2530EB_REV17。 但 LED1和 LED3n´t 工作!

    我忘记了在 Hal_borg_cfg.h 中包含有关项目中包含的 LED 数量的信息。

    * ------------------------------------------------------------------------------------------------
     *                                       LED Configuration
     * ------------------------------------------------------------------------------------------------
     */
    #if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && \
        !defined (HAL_PA_LNA_CC2590) && !defined (HAL_PA_LNA_SE2431L) && \
        !defined (HAL_PA_LNA_CC2592)
      #define HAL_NUM_LEDS            3
    #elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) ||  \
          defined (HAL_PA_LNA_CC2590)  || defined (HAL_PA_LNA_CC2592) || \
          defined (HAL_PA_LNA_SE2431L)
      #define HAL_NUM_LEDS            1
    #else
      #error Unknown Board Indentifier
    #endif

    BR、

    Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的硬件和软件配置运行良好、您 应 将 HAL_Turn ON_LED1 ()放在 HAL_Board_init ()的下一个主函数中、以使测试 LED 正常工作、或者如果工作正常、您可以逐步解决 问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议您在打开/关闭 D1和 D3时设置断点、以检查 P0SEL 和 P0DIR 是否被其他驱动程序覆盖。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,谢谢你,黄先生。

    我n´t 在 hal_Borad 和 hal_led 设置断点、但我没有成功地看到问题是什么。 在您提出建议后、我在我的应用程序中的代码调用 LED3点包含了断点、并看到端口 P1_4根据我的器件开启或关闭而被激活或停用。 但端口 P1_4在 hal_board_cfg 上n´t 定义。 在 hal_board 上定义的端口为 P0_5、如下所示:

      /* 2 - Green D2 - Circuit 2 */
      #define LED3_BV           BV(5)
      #define LED3_SBIT         P0_5 
      #define LED3_DDR          P0DIR
      #define LED3_POLARITY     ACTIVE_LOW

    我的应用程序代码、代码在调用 LED3时进行解释

    注:我注释掉了 P0_5以测试 HAL_LED_3。

      if ( keys & HAL_KEY_SW_6 )
      {
        // toggle local light immediately
        zclAZh0004_OnOffC2 = zclAZh0004_OnOffC2 ? LIGHT_OFF : LIGHT_ON;
    	
    	if ( zclAZh0004_OnOffC2 == LIGHT_ON )
    	{
    	  osal_start_timerEx( zclAZh0004_TaskID, AZh0004_LEVEL_CTRL_EVT, 100 );
    		//P1_5 = 1; // AZH0004 OC2 turn on Relay
    		 //P0_5 = 0; // LED GREEN is active in low
    		 HalLedSet ( HAL_LED_3, HAL_LED_MODE_OFF );
    
    		
    
    	}
    	
    	// Turn off the light via ZCL ON/OFF CMD
    	else if ( zclAZh0004_OnOffC2 == LIGHT_OFF )
    	{
    	  //osal_start_timerEx( zclAZh0004_TaskID, AZh0004_LEVEL_CTRL_EVT, 100 );
    		//P1_5 = 0; // AZH0004 OC2 turn on Relay
    		//P0_5 = 1; // LED GREEN is active in low
    		HalLedSet ( HAL_LED_3, HAL_LED_MODE_ON );
    
    		
    	}

    调用 LED3时超时的断点、但按 P1_4  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可能会尝试使用以下代码来打开 LED3

    P0SEL ^= BV (5);

    P0DIR |= BV (5);

    P0_5=1;

    以下代码关闭 LED3

    P0SEL ^= BV (5);

    P0DIR |= BV (5);

    P0_5=0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yk 先生、我在  密钥和 HAL_KEY_SW_6 (开/关)中直接使用应用代码中的 P0_5时获得了成功!

    我确实尝试使用驱动器结构(Hla_board_cfg 和 hal_led)来打开或关闭 LED3。 但我不知道为什么 LED3_BV 和 LED3_SBIT AS P0_5不工作。

    BR

    Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的代码中必须更改 P0SEL 或 P0DIR 以导致 P0.5不工作、因此您只能在初始化后逐步跟踪 P0.5、以了解应用程序的哪个部分进行此类修改。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yk 先生,对不起,我的延迟!

    我发现了问题、非常感谢您的帮助!

    我´ll 任何人都犯同样的错误!

    在检查了在调用 LED 时工作的端口后、我发现这是 Z 堆栈文件中使用的默认端口、 之后、我在项目文件夹中添加了我的 hal_board_cfg.h、并开始在 IAR IDE 上重建项目、并且注意到没有任何变化。 主要问题是我创建了一个新的 halal 目标器件、并且未将其包含在编译器选项处理器中。 如您所见:

    $PROJ_DIR$\..\..\..\..\..\..\Components\hal\target\new target folder

    修复后一切都很好!