///这是我看到程序但我的中断无法进入的过程、我有两个问题、一个是:(1)在发送 ui32DataTx 内部、使用 I2CMasterControl (I2C0_BASE、//I2C_MASTER_CMD_BURST_SEND_START);//配置中断源:
// I2CSlaveIntEnableEx (I2C0_BASE I2C_SLAVE_INT_DATA);
//I2C_SLAVE_INT_STOP-STOP 条件检测中断
// i2c_slave_int_start-start 条件检测中断
// I2C_SLAVE_INT_DATA -数据中断
//这三个值的含义分别是什么
///这是我的程序
#include
#include
#include "inc/hw_i2c.h"
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/i2c.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#define LED_ON GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3、0xFF);
定义从机地址 μ s
#define SLAVE_ADDRESS 0x3C
#define g_BIntFlag 0
接收的数据 μ s
uint32_t g_ui32DataRx;
中断标志位 μ s
串口初始化函数 μ s
空 InitConsole (空)
{
SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk (UART0_BASE、SysCtlClockGet ()、115200、(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
}
中断处理函数 μ s
空 I2C0SlaveIntHandler (空)
{
清除中断标志位 μ s
I2CSlaveIntClear (I2C0_BASE);
//从从从器件读取数据。
G_ui32DataRx = I2CSlaveDataGet (I2C0_BASE);
LED_ON;
//设置一个标志来指示中断发生。
// g_bIntFlag = 1;
}
void LED_init (void)
{
SysCtlClockSet (SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3);
}
//配置 I2C0主机和从机,并使用环回模式连接它们。
int main (空)
{
uint32_t ui32DataTx;
/外部晶振作为时钟源16MHz
SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);
LED_INIT ();
////////////////// 使能IIC μ A
SysCtlPeripheralEnable (SYSCTL_Periph_I2C0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
GPIOPinConfigure (GPIO_PB2_I2C0SCL);
GPIOPinConfigure (GPIO_PB3_I2C0SDA);
GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_2);
GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_3);
//启用环回模式。
HWREG (I2C0_BASE + I2C_O_MCR)|= 0x01;
//在处理器(NVIC)上启用 I2C0中断。
IntEnable (INT_I2C0);
//配置中断源:从机接收到数据产生中断 I2C_SLAVE_INT_STOP - Stop条件检测到中断 Ω
// I2C_SLAVE_INT_START - Start条件检测到中断 μ A
// I2C_SLAVE_INT_DATA 数据中断 Ω
I2CSlaveIntEnableEx (I2C0_BASE、I2C_SLAVE_INT_DATA);
//使能并初始化I2C0的主模块,I2C0模块使用系统时钟。
语句的最后一个参数是用来设定数据传输速率的。false表示传输速率是100kbps,true则意味着传输速率是400kbps。μ s
I2CMasterInitExpClk (I2C0_BASE、SysCtlClockGet ()、false);
//启用 I2C0从机模块。
I2CSlaveEnable (I2C0_BASE);
从机地址 μ s
I2CSlaveInit (I2C0_BASE、SLAVE_ADDRESS);
//false:主模块发送,从模块接收
I2CMasterSlaveAddrSet (I2C0_BASE、SLAVE_ADDRESS、FALSE);
// InitConsole();
IntMasterEnable();
ui32DataTx = 0x33;
//把将发送的数据存入数据寄存器中
while (1)
{
I2CMasterDataPut (I2C0_BASE、ui32DataTx);
//主模块开始发送数据,模式:主机发送单字节数据
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_START);
//UARTCharPut (UART0_BASE、g_BIntFlag);
//等待中断发生。
// while (g_BIntFlag);
}
}
////中文
这就是我看的给的历程的程序但是我的中断进不去,我有两个疑问,一:1)里面发送 ui32DataTx(后,是用I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_START)时为//μ s;
二:μ 配置中断源:μ μ A
//I2CSlaveIntEnableEx (I2C0_BASE、I2C_SLAVE_INT_DATA);
从机接收到数据产生中断 μ s I2C_SLAVE_INT_STOP - Stop条件检测到中断 μ s
// I2C_SLAVE_INT_START - Start条件检测到中断 μ A
// I2C_SLAVE_INT_DATA 数据中断 Ω
这三个分别什么意思我在库文件里没找到回答 μ s
////英文
///这是我看到程序但我的中断无法进入的过程、我有两个问题、一个是:(1)在发送 ui32DataTx 内部、使用 I2CMasterControl (I2C0_BASE、//I2C_MASTER_CMD_BURST_SEND_START);//配置中断源:
// I2CSlaveIntEnableEx (I2C0_BASE I2C_SLAVE_INT_DATA);
//I2C_SLAVE_INT_STOP-STOP 条件检测中断
// i2c_slave_int_start-start 条件检测中断
// I2C_SLAVE_INT_DATA -数据中断
//这三个值的含义分别是什么