TI中文支持网
TI专业的中文技术问题搜集分享网站

请帮提供蓝牙(从属设备)中断处理程序

大家好:

    我们购买了BT-MSPAUDSOURCE Tools Bluetooth and MSP430 Audio开发板(MSP430F5229),希望提供中断处理程序(最好主设备,从属设备各一套);最好完整一些(宏定义,初始化,执行完整部分)  

      谢谢!

 

Susan Yang:

有些不太理解您的意思。能否详细描述一下

您现在是说的哪部分的中断处理程序?

之前已经在相关帖子内回复了

e2echina.ti.com/…/179331

user5274273:

回复 Susan Yang:

SuSan,  您好:

     按照“蓝牙传输”的理论, 我们希望蓝牙主设备采用“广播方式”发出数据包;蓝牙从设备接收到数据,产生中断,解析数据包内容,进行相应处理!

     我们使用的MSP430F5229芯片(开发板是:BT-MSPAUDSOURCE Tools Bluetooth and MSP430 Audio开发板),我们希望以它为基础的

蓝牙(从属设备)中断处理程序

user5274273:

回复 user5274273:

大家好:

   您看如下的MSP430的蓝牙接收中断处理程序,改装时注意几项?

   
#pragma vector = USCIAB0RX_VECTOR //接收中断__interrupt void USCI0RX_ISR(void)//中断程序,串口通讯的规则设计{    while ( !(IFG2&UCA0TXIFG) ); //确保发送缓冲区准备好    a=UCA0RXBUF;
    if (a=='1')   {        b++;        flag=1;
            P1OUT^=BIT0;     }   
    UCA0TXBUF=UCA0RXBUF;    IFG2 &=~ UCA0TXIFG;    //接收指示灯状态改变 }

Susan Yang:

回复 user5274273:

MSP430 的 UART 例程您可以参考

/* --COPYRIGHT--,BSD_EX* Copyright (c) 2012, Texas Instruments Incorporated* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** *Redistributions of source code must retain the above copyright*notice, this list of conditions and the following disclaimer.** *Redistributions in binary form must reproduce the above copyright*notice, this list of conditions and the following disclaimer in the*documentation and/or other materials provided with the distribution.** *Neither the name of Texas Instruments Incorporated nor the names of*its contributors may be used to endorse or promote products derived*from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR* CONTRIBUTORS 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.**********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/
//******************************************************************************
//MSP430F552x Demo - USCI_A0, Ultra-Low Pwr UART 2400 Echo ISR, 32kHz ACLK
//
//Description: Echo a received character, RX ISR used. Normal mode is LPM3,
//USCI_A0 RX interrupt triggers TX Echo.
//ACLK = REFO = ~32768Hz, MCLK = SMCLK = DCO ~1.045MHz
//Baud rate divider with 32768Hz XTAL @2400 -- from User's Guide
//See User Guide for baud rate divider table
//
//MSP430F552x
//-----------------
///|\||
//| ||
//--|RST|
//||
//|P3.3/UCA0TXD|------------>
//|| 2400 - 8N1
//|P3.4/UCA0RXD|<------------
//
//Bhargavi Nisarga
//Texas Instruments Inc.
//April 2009
//Built with CCSv4 and IAR Embedded Workbench Version: 4.21
//******************************************************************************#include <msp430.h>int main(void)
{WDTCTL = WDTPW | WDTHOLD;// Stop WDTP3SEL = BIT3+BIT4;// P3.4,5 = USCI_A0 TXD/RXDUCA0CTL1 |= UCSWRST;// **Put state machine in reset**UCA0CTL1 |= UCSSEL_1;// CLK = ACLKUCA0BR0 = 0x0D;// 2400 (see User's Guide)UCA0BR1 = 0x00;//UCA0MCTL |= UCBRS_6+UCBRF_0;// Modulation UCBRSx=6, UCBRFx=0UCA0CTL1 &= ~UCSWRST;// **Initialize USCI state machine**UCA0IE |= UCRXIE;// Enable USCI_A1 RX interrupt__bis_SR_register(LPM3_bits + GIE);// Enter LPM3, interrupts enabled__no_operation();// For debugger
}// Echo back RXed character, confirm TX buffer is ready first
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{switch(__even_in_range(UCA0IV,4)){case 0:break;// Vector 0 - no interruptcase 2:// Vector 2 - RXIFGwhile (!(UCA0IFG&UCTXIFG));// USCI_A1 TX buffer ready?UCA0TXBUF = UCA0RXBUF;// TX -> RXed characterbreak;case 4:break;// Vector 4 - TXIFGdefault: break;}}

user5274273:

回复 Susan Yang:

谢谢! 我将仔细研读

user5274273:

回复 Susan Yang:

大家好:

     经过“理论“确认,USCI_A0_VECTOR(HCI_RX_1V8_CC—->MSP430F5229的37管脚:P3.3/UCA0TXD)正是我们蓝牙的主接收端口!

     但我们将这个中断处理程序写入后, (

          请参考:

         

// Echo back RXed character, confirm TX buffer is ready first
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
  switch(__even_in_range(UCA0IV,4))
  {
  case 0:break;                             // Vector 0 – no interrupt
  case 2:                                   // Vector 2 – RXIFG
    while (!(UCA0IFG&UCTXIFG));             // USCI_A1 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF;                  // TX -> RXed character
    break;
  case 4:break;                             // Vector 4 – TXIFG
  default: break;
  } 
}

 

程序下载后就跑飞了, 不能跳转到main()入口处!

如何破解?

灰小子:

回复 user5274273:

单从这段代码看,是没有问题的。方便的话建议提供完整代码或工程。

user5274273:

回复 灰小子:

谢谢! 请帮参考!

奇怪的是: 如果没有加上那段(#pragma vector=USCI_A0_VECTOR……)中断处理程序,一切正常!

但……A3DPDemo_SNK.zip

user5274273:

回复 user5274273:

大家好:在这个应用中,我们希望解决如下问题:1). 用“GAP_LE_Perform_Scan(”获得当前范围内的“蓝牙设备”,用中断处理程序"USCI_A0_ISR"来获得它们的“设备名称”2). 指定自己为“主设备”, 其它特定的设备为“从设备”3). “主设备”广播发送数据,同步“从设备”

请问我们的实现策略合理吗?

Susan Yang:

回复 user5274273:

1您可以使用GetRemoteName 来获取设备的名称
/* The following function is responsible for querying the Bluetooth*//* Device Name of the specified remote Bluetooth Device.This*//* function returns zero on successful execution and a negative value*//* on all errors.

2 您可以使用HCI_Role_Discovery来查看当前的role

static Boolean_tLocalDeviceIsMaster;/* Boolean that tells if the local *//* device is the master of the*//* current connection.*/

3 您是想通过广播来同步?

另外建议您若是遇到新问题请重新发帖,以便于回复与查看,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » 请帮提供蓝牙(从属设备)中断处理程序
分享到: 更多 (0)