工具/软件:Code Composer Studio
您好!
我正在尝试将 UART0接口与 tm4c129 launchpad 配合使用、以连接来自 SparkFun 的 venus GPS 传感器。 我可以每次接收数据、但我无法发送命令来限制每次实际获取的数据。 下面是我编写的用于接收的 UART 代码。 当我也从这个中断过程中接收数据时、我也会得到一个溢出错误。 如果有任何建议或帮助、我们将不胜感激!
www.sparkfun.com/.../Skytraq-Venus634FLPx_DS_v051.pdf 这是数据表、这是传感器 www.sparkfun.com/.../AN0003_v1.4.14_FlashOnly.pdf 的二进制命令
下面是我到目前为止的代码。
#include
#include
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
uint32_t ui32SysClkFreq;
int y;
char *token;
char c ='0';
字符数据[80];
INT 计数= 0;
无符号字符速率[17]={0xA0、0xA1、0x00、0x09、0x02、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x0D、0x0A};
无符号字符 GGA[16]={0xA0、0xA1、0x00、0x09、0x08、0x01、0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x08、0x0D、0xA0};
uint32_t num = 120000;
uint32_t delay = 102888;
void sendChar();
int main (空)
{
ui32SysClkFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_UART0))
UARTClockSourceSet (UART0_BASE、UART_CLOCK_SYSTEM);
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
UARTFIFODisable (UART0_BASE);
UARTTxIntModeSet (UART0_BASE、UART_TXINT_MODE_FIFO);
UARTConfigSetExpClk (UART0_BASE、ui32SysClkFreq、9600、(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
UARTFIFOEnable (UART0_BASE);
UARTTxIntModeSet (UART0_BASE、UART_TXINT_MODE_FIFO);
UARTFIFOLevelSet (UART0_BASE、UART_FIFO_TX1_8、UART_FIFO_RX1_8);
IntMasterEnable();
IntEnable (INT_UART0);
UARTRxErrorClear (UART0_BASE);
UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_OE | UART_INT_RT);
}
/*void sendChar()
{
unsigned int y;
对于(x=0;x<10;x++)
{
while (UARTBusy (UART0_BASE));
UARTCharPut (UART0_BASE、RATE [x]);
SysCtlDelay (100);
X++;
*
空 UARTIntHandler (空)
{
uint32_t ui32Status;
ui32Status = UARTIntStatus (UART0_BASE、TRUE);//获取中断状态
UARTIntClear (UART0_BASE、ui32Status);//清除已发出的中断
while (UARTCharsAvail (UART0_BASE))//循环(有字符时)
{
for (y=0;y<16;y++)
{
while (UARTBusy (UART0_BASE));
UARTCharPut (UART0_BASE、GGA[15]);
Y++;
}
if (计数<80)
{
//SysCtlDelay (延迟);
DATA[COUNT]= UARTCharGet (UART0_BASE);
//SysCtlDelay (延迟);
count++;
}
if (count = 80)
{
UARTDisable (UART0_BASE);
}
}
}