请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F5529 主题中讨论的其他部件: TLV320DAC3100
没有为我的代码生成中断。
这是我的代码:
#include "driverlib.h"
//*********************************************************************************************************
//! 此示例显示如何将I2C模块配置为
//! 中断驱动模式下的多字节传输。 从属
设备的地址//! 模块在本示例中设置。
//!
//! 本示例使用以下外围设备和I/O信号。 你必须
//! 查看这些内容并根据需要对您自己的主板进行更改:
//! - I2C外设
//! - GPIO端口外设(用于I2C引脚)
//! - SCL2
//! - SDA
//!
//! 此示例使用以下中断处理程序。 要使用此示例
//! 在您自己的应用程序中,您必须将这些中断处理程序添加到
您的//! 引导程序表。
//! - USI_B0_Vector。
////*************************************************************************************************
//*************************************************************************************************
////
设置从属模块的地址。 这是以
///以下格式发送的7位地址:
//[A6:A5:A4:A3:A2:A1:A0:RS]
////
第一个字节"RS"位置中的零表示主//
向所选从属设备传输(发送)数据,在此位置
的一个//表示主设备从从属设备接收数据。
////*************************************************************************************************
#define slaver_address 0x30
//*************************************************************************************************
////
指定要传输的字节数
/////*************************************************************************************************
#define TXLENGTH 0x04
#define RXCOUNT 0x02
uint8_t传输数据[40]={ 0x00,
0x01,
0x01,
0x01};
uint8_t传输计数器=0;
无符号字符接收缓冲区[10]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00};
Unsigned char *receiveBufferPointer;
unsigned char receiveCount =0;
void transmit_enable(void)
;
void main()
{//
停止WDT
WDT_a_hold (WDT_a_base);
//将
初始化引脚分配给USI_B0_GPIO _setAsiCI_PeripheralModuleFunctionInputPpinpin (JI2_OC_OC_OC_UST_PIB_UP_UP_USB_UP_USB_USB_USB_USB_USB_USB_USB_USB_USB_PI_USB_PI_USB0;USB_PI_PIG_PIG_PIG_PIC_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_USB_0;USB_USB_USB_USB_USB_USB_0 = UPB_USB_USB_USB_USB_USB_PI_PI_PI_PI_PI_PI_
param.selectClockSource
¶m);
//指定从属地址
USI_B_I2C_setSlaveAddress(USCI_B0_BAS,
SLAVE_ADDRESS
);//
启用I2C模块以启动操作
USI_B_I2C_ENable(USCI_B0_B0_base);
While (1){
Transmit_enable(Transmit_enable)//
启用传输中断USCI_B_Interrupt_I2C_Transbyte_Interrupt_I2C_Transble_I2C_DE_I2B0_CE_CE_ENB0
;
传输中断EBI_CE_CE_CE_CEB0
//避免竞争状态
//__bis_sr_register(LPM0 + GIE);
//__bis_sr_register(GIE);
//输入启用中断
的LPM0 __bis_sr_register(LPM0_bits + GIE);
__no_operation();
//delay直到传输完成
,同时(UCOBy_Baseb_Transfit_Receive_Transfit)
接收缓冲区={USI_Bef_Transf_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfit_Transfect=<I2_Transfit_Transfit_Transfit_Transfit_Transfect=<I2_<I2_<I2_<I2_<I2_<_<I2_<=<_</
__bis_sr_register(LPM0_bits + GIE);
__no_operation();
}
中断void transmit_enable(void){//设置传输模式USI_B_setMode(USCI_B0_base, USI_B_I2C_Transmit_mode );}****receive_enable(void){//set传输模式USI_B_I2C_base_USCI_BIOS_I2C_IE0, USCI_BIOS_BIOS_BIC_IE0, USCI_BIOS_BIOS_USCI_BIOS_BIC_IE0, USCI_BIOS_USCI_BIOS_USCI_BIOS_MODEF, USCI_BIOS_UBIOS_UBIOS_UBIOS_UBIC_IE0, USCI_正常
接收模式********BIOS_USCI_BIOS_USCI_正常 模式
********
//
//这是USI_B0中断向量服务例程。
////************************************************************************************************
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#sedraneserma vector=USCI_B0_vector
__interrupt
#Elif defined(__GNU__)
__attribute__(interrupti_ISCI_B0_iver)__(中断(interlut_USB_ISCI_B0_I2C)
#endter_I2I =秒数(interlav_USCI_ST_USCI_ST_USCI_ST_USCI_ST_USCI_ST_USCI_STAC_USCI2_USCI_STAC_USCI2=)#)#ENB0
//清除主中断状态
USI_B_I2C_clearInterrupt (USCI_B0_BBASE,
USI_B_I2C_Transmit_Interrupt );
//中断返回
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits)时退出LPM0;
}
中断;
启动案例USCI_I2C_UCRXIFG:{/DeceNAC_Receive=接收计数器1={eSCI_ReceiverB1<SCI_COUNT_ReceiverB1}
接收计数器<SCI_POBEF_STE=接收数<SCIF=接收byte7=<SCIF=接收数<SCIF=接收数<SCI_STEBIN1<SCIF=多字节SCIF=接收数<SCIF=接收数<SCIF>
else
{//
每次接收一个字节
*receiveBufferPointer++= USI_B_I2C_masterReceiveMultiByteNext(
USI_B0_BBASE
);
}
else
{//
接收最后一个字节
*receiveBufferPointer = USI_B_I2C_masterReceiveMultiByteNext(
USI_B0_B0_BASE
);
}_PMIC_EXIT }_B0;}}_LOCK_BAC_BAC_BAC_BAC_BAC_BAC_B20
我将MSP430F5529作为主设备与 TLV320DAC3100音频DAC作为从属设备连接。
根据 TLV320DAC3100从属地址的数据表,从属地址为0x30。
我使用库代码作为参考。
我无法生成中断。 本规范是否有任何问题?