您好、先生、
我们将 LED 和 UART 代码下载到运行良好的 TM4C1294NCPDT Launchpad 中。 我已将 SSI 代码添加到 LED 和 UART 代码中、现在我尝试 使用 LM 闪存编程器工具将代码下载到 launchpad 中、但并非如此。
我正在使用 LM 闪存编程器工具来下载代码。
请找到以下视频链接。
我使用了以下代码。
请找到以下代码。
#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "drivers/pinout.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "driverlib/ssi.h"
#include "inc/hw_ssi.h"
#include "driverlib/debug.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_types.h"
//
//
//! \addtogroup example_list
//!
Hello World (您好)
//!
//! 一个非常简单的``hello world '示例。 它只显示``Hello World!'"
//! 并且是更复杂应用的起点。
//!
//! 用115、200 8-N-1打开一个终端、以查看此演示的输出。
//
//
//
//
//系统时钟速率,单位为 Hz。
//
//
uint32_t g_ui32SysClock;
//
//
//驱动程序库遇到错误时调用的错误例程。
//
//
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)
{
}
#endif
//
//
//配置 UART 及其引脚。 这必须在 UARTprintf()之前调用。
//
//
无效
配置 UART (空)
{
//
//启用 UART 使用的 GPIO 外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
//
//启用 UART0
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
//
//为 UART 模式配置 GPIO 引脚。
//
ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
//
//初始化控制台 I/O 的 UART
//
UARTStdioConfig (0、115200、g_ui32SysClock);
}
无效
SSIConfigSetExpClk (uint32_t ui32Base、uint32_t ui32SSIClk、
uint32_t ui32协议、uint32_t ui32模式、
uint32_t ui32BitRate、uint32_t ui32DataWidth)
{
uint32_t ui32MaxBitRate;
uint32_t ui32RegVal;
uint32_t ui32 PreDiv;
uint32_t ui32SCR;
uint32_t ui32SPH_SPO;
//
//检查参数。
//
assert (_SSIBaseValid (SSI0_BASE));
Assert ((ui32Protocol == SSI_FRF_MOTO_MODE_0)||
(ui32Protocol =SSI_FRF_MOTO_MODE_1)||
(ui32Protocol =SSI_FRF_MOTO_MODE_2)||
(ui32协议=SSI_FRF_MOTO_MODE_3)||
(ui32Protocol =SSI_FRF_TI)||
(ui32协议=SSI_FRF_NMW);
断言((ui32Mode = SSI_MODE_MASTER)||
(ui32Mode = SSI_MODE_SLAVE);
Assert ((((ui32Mode = SSI_MODE_MASTER)&&
(ui32BitRate <=(ui32SSIClk / 2))))||
((ui32Mode!= SSI_MODE_MASTER)&&
(ui32BitRate <=(ui32SSIClk / 12)));
assert (((ui32SSIClk / ui32BitRate)<=(254 * 256));
assert (((ui32DataWidth >= 4)&&(ui32DataWidth <= 16));
//
//设置模式。
//
ui32RegVal =(ui32Mode = SSI_MODE_MASTER)? 0:SSI_CR1_MS;
HWREG (SSI0_BASE + SSI_O_CR1)= ui32RegVal;
//
//设置时钟预分频器。
//
ui32MaxBitRate = ui32SSIClk / ui32BitRate;
ui32 PreDiv = 0;
操作
{
ui32 PreDiv += 2;
ui32SCR =(ui32MaxBitRate / ui32PreDiv)- 1;
}
while (ui32SCR > 255);
HWREG (SSI0_BASE + SSI_O_CPSR)= ui32 PreDiv;
//
//设置协议和时钟速率。
//
ui32SPH_SPO =(ui32Protocol & 3)<< 6;
ui32协议&= SSI_CR0_FRF_M;
ui32RegVal =(ui32SCR << 8)| ui32SPH_SPO | ui32Protocol |
(ui32DataWidth - 1);
HWREG (SSI0_BASE + SSI_O_CR0)= ui32RegVal;
}
无效
SSIEnable (uint32_t ui32Base)
{
//
//检查参数。
//
assert (_SSIBaseValid (ui32Base));
//
//读取-修改-写入使能位。
//
HWREG (ui32Base + SSI_O_CR1)|= SSI_CR1_SSE;
}
无效
SSIDataPut (uint32_t ui32Base、uint32_t ui32Data)
{
//
//检查参数。
//
assert (_SSIBaseValid (ui32Base));
Assert (((ui32Data &(0xfffffffe <<)(HWREG (ui32Base + SSI_O_CR0)&
SSI_CR0_DSS_M))= 0);
//
//等待,直至有空格。
//
while (!(HWREG (ui32Base + SSI_O_SR)& SSI_SR_TNF))
{
}
//
//将数据写入 SSI。
//
HWREG (ui32Base + SSI_O_DR)= ui32Data;
}
//
//
//打印"Hello World!" 连接到智能 UART 模块上的 UART。
//
//
内部
main (空)
{
//
//从 PLL 以120MHz 运行。
//
G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
//
//配置器件引脚。
//
PinoutSet (false、false);
//
//为 LED D1 (PN1)启用 GPIO 引脚。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_1);
//
//初始化 UART。
//
ConfigureUART();
//
//初始化 SSI0。
//
SSIEnable (SSI0_BASE);
SSIConfigSetExpClk (SSI0_BASE、50000000、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、1000000、8);
SSIDataPut (SSI0_BASE、"B");
//
//您好!
//
while (1)
{
//UARTprintf (" UART 代码!\n");
SSIDataPut (SSI0_BASE、0x55);
//
//我们已完成。 在闪烁的 D1周围挂起。
//
//
//打开 D1。
//
LEDWrite (CLP_D1、1);
//
//延迟一位。
//
SysCtlDelay (g_ui32SysClock / 10 / 3);
//
//关闭 D1。
//
LEDWrite (CLP_D1、0);
//
//延迟一位。
//
SysCtlDelay (g_ui32SysClock / 10 / 3);
}
}