Thread 中讨论的其他器件: EK-TM4C123GXL
工具/软件:Code Composer Studio
我正在使用计时器中断。通过 SPI 发送和接收数据、也使用 SSI 中断、但它不起作用
她是我的代码
#include
#include
#include
#include
#include
//#include "inc/tm4c123ghp6.h"
#include "inc/hw_memmap.h"
#include "inc/hw_ssi.h"
#include "inc/hw_ints.h"
#include "inc/hw_types.h"
#include "driverlib/ssi.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI1);
GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_1);
GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_1、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);
GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA3_SSI0FSS);
GPIOPinConfigure (GPIO_PA5_SSI0TX);
GPIOPinConfigure (GPIO_PA4_SSI0RX);
GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);
//等待 SSI0模块准备就绪。
//
//
//配置 SSI。
//
SSIConfigSetExpClk (SSI0_BASE、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、100000、 16);
//
//
//启用 SSI 模块。
//
SSIEnable (SSI0_BASE);
//启用 SSI 模块。
GPIOPinConfigure (GPIO_PD0_SSI1CLK);
GPIOPinConfigure (GPIO_PD1_SSI1FSS);
GPIOPinConfigure (GPIO_PD2_SSI1RX);
GPIOPinConfigure (GPIO_PD3_SSI1TX);
GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1_GPIO_PIN_0);
//等待 SSI0模块准备就绪。
//
//
//配置 SSI。
//
SSIConfigSetExpClk (SSI1_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_0、SSI_MODE_SLAVE、100000、 16);
//
SSIEnable (SSI1_base);
/_________________________ 启用定时器__________________
SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
TimerConfigure (TIMER0_BASE、TIMER_CFG_PERIODICASE);
ui32Period =(SysCtlClockGet ()/10)/2;
TimerLoadSet (TIMER0_BASE、TIMER_A、ui32Period -1);
IntEnable (INT_TIMER0A);
TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
IntMasterEnable();
TimerEnable (TIMER0_BASE、TIMER_A);
SSIIntEnable (SSI1_BASE、SSI_RXFF);
IntEnable (INT_SSI1);
while (1)
{
while (flag=0){};
flag=0;
uint32_t 值;
值= 0x00000000;
//发送消息
SSIDataPut (SSI0_BASE、value);
while (SSIBusy (SSI0_BASE))
{
}
}
空 Timer0IntHandler (空)
{
TimerIntClear (TIMER0_BASE、TIMER_TINA_TIMEOUT);
flag=1;
}
空 SSI1IntHandler (空)
{
SSIDataGet (SSI1_base、&g_data);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_1、g_data);
//
//清除中断。
//
SSIIntClear (SSI1_BASE、SSI_RXFF);
}