TI BLE-CC254x-1.3.2 SimpleBLEPeripheral MINI Keyfob 编译错误

最近在做BLE 的研究 使用TI的 BLE-CC254x-1.3.2  协议栈

做好了串口测试做后 做发现模式 在预编译 输入 CC2540_MINIDK 编译后出现以下警告

Warning[w52]: More than one definition for the byte at address 0x6b in common segment INTVEC. It is defined in module "hal_uart" as well as in module "hal_key" 

重复定义地址 0x6B ,看了数据手册发现 0x6b的地址是  P0 的终端向量

最后查看 串口和 key 的终端 函数 分别在 _hal_uart_dma.c 和 hal_key.c 文件中

@fn      PortX Interrupt Handler

HAL_ISR_FUNCTION(port0Isr, P0INT_VECTOR)


@fn      halKeyPort0Isr

HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )


两个函数 都在  P0INT_VECTOR 地址    P0INT_VECTOR   VECT( 13, 0x6B )   /*  Port 0 Inputs 

是P0 的中断函数,相当中断函数两个地方定义 导致以上警告

在程序运行中会无法运行某些代码,为了解决这个问题,看看这两个终端到底做了些啥


/**************************************************************************************************
 * @fn      PortX Interrupt Handler
 *
 * @brief   This function is the PortX interrupt service routine.
 *
 * @param   None.
 *
 * @return  None.
 *************************************************************************************************/
#if (HAL_UART_DMA == 1)
HAL_ISR_FUNCTION(port0Isr, P0INT_VECTOR)
#else
HAL_ISR_FUNCTION(port1Isr, P1INT_VECTOR)
#endif
{
  HAL_ENTER_ISR();

  PxIFG = 0;
  PxIF = 0;

  dmaRdyIsr = 1;

  CLEAR_SLEEP_MODE();
  HAL_EXIT_ISR();
}

串口的中断是 主要 关闭睡眠模式 以及睡眠模式相关标志






/**************************************************************************************************
 * @fn      halKeyPort0Isr
 *
 * @brief   Port0 ISR
 *
 * @param
 *
 * @return
 **************************************************************************************************/
HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
{
  HAL_ENTER_ISR();


#if defined ( CC2540_MINIDK )
  if ((HAL_KEY_SW_1_PXIFG & HAL_KEY_SW_1_BIT) || (HAL_KEY_SW_2_PXIFG & HAL_KEY_SW_2_BIT))
#else
  if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT)
#endif
  {
    halProcessKeyInterrupt();
  }


  /*
    Clear the CPU interrupt flag for Port_0
    PxIFG has to be cleared before PxIF
  */
#if defined ( CC2540_MINIDK )
  HAL_KEY_SW_1_PXIFG = 0;
  HAL_KEY_SW_2_PXIFG = 0;
#else
  HAL_KEY_SW_6_PXIFG = 0;
#endif
  HAL_KEY_CPU_PORT_0_IF = 0;


  CLEAR_SLEEP_MODE();


  HAL_EXIT_ISR();


  return;
}


KEY 主要完成的是 按键的扫描 和 关闭睡眠模式


TI 没有把 中断服务程序 放在 一起 统一 管理 导致 上述问题的出现


看了这些我想到大家应该知道怎么去解决这个问题了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值