我正在尝试让 TM4C 通过蓝牙与 BLUESMIRF Silver 器件通信。 我想通过蓝牙、然后通过 UART 从我的笔记本电脑向 BLUESMIRF 发送两个字母的简单命令、再从 BLUESMIRF 发送到 TM4C。
笔记本电脑--(蓝牙)-->BLUESMIRF --(UART)-->TM4C
我的连接如下:
TM4C UART PB0 RX <--> BLUESMIRF TX
TM4C UART PB1 TX <--> BLUESMIRF RX
TM4C +3.3V <--> BLUESMIRF Vcc
TM4C GND <--> BLUESMIRF GND
我正在通过连接到 PC 的 micro-USB 为 TM4C 供电。
我正在尝试将命令键入 Tera Term、该术语连接到 COM 端口、该端口是到 BLUESMIRF 的蓝牙连接。 当我连接到正确的 COM 时、它通过点亮 BLUESMIRF 上的绿色 LED 来验证我的蓝牙连接。
如果有人可以检查我的代码并查看是否有问题、我会非常感激。 当我键入 Tera Term 时、我希望它将数据发送到 TM4C 并触发 UART RX 中断、然后根据发送的数据打印特定信息。 谢谢。
--------------------------------------------------
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "driverlib/debug.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)
{
}
#endif
char 命令[2]=";
char speed[4]=";
空 UART1处理程序(空)
{
uint32_t ui32Status;
ui32Status = ROM_UARTIntStatus (UART1_base、true);
ROM_UARTIntClear (UART1_BASE、ui32Status);
UARTgets (command、strlen (command)+ 1);
UARTprintf ("\n");
if (!strcmp (command、"SS"))//设置速度
{
UARTprintf ("请输入1-100%的所需电机转速。\n");
UARTgets (speed、strlen (speed)+ 1);
}
否则、如果(!strcmp (命令、"ES"))//紧急停止
{
UARTprintf ("正在停止电机...");
}
否则、如果(!strcmp (command、"ST"))//开始
{
UARTprintf ("正在启动电机...");
}
UARTprintf ("\n");
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);
SysCtlDelay (10000000);
}
空配置 UART (空)
{
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART1);
ROM_IntMasterEnable();
ROM_GPIOPinConfigure (GPIO_PB0_U1RX);
ROM_GPIOPinConfigure (GPIO_PB1_U1TX);
ROM_GPIOPinTypeUART (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
UARTClockSourceSet (UART1_base、UART_CLOCK_PIOSC);
UARTStdioConfig (1、115200、16000000);
IntRegister (INT_UART1、UART1处理程序);
ROM_IntEnable (INT_UART1);
ROM_UARTIntEnable (UART1_base、UART_INT_RX | UART_INT_TX);
}
/********* 主要内容 /
int main (空)
{
ROM_FPULazyStackingEnable();
ROM_SysCtlClockSet (
SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
ConfigureUART();
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2);
while (1)
{
}
}