工具/软件:Code Composer Studio
我已克隆"boot_demo"示例并进行了以下更改:
1.删除了 SW1按钮的用法
2.添加了 UART 中断处理程序、用于接收和响应来自 UART 的命令
3.添加了 LED 闪烁
目的是使程序闪烁并等待 UART 命令并执行这些命令。 以下是我要支持的主要命令:
1. LED 闪烁
2. LED 闪烁关闭
3.进入引导加载程序模式
我测试这种情况的方法是、在通过 USB 连接对"boot_serial"示例进行编程后、立即使用 LM Flasher 将我的"boot_demo"编程到地址0x4000。
我有以下问题:
为了使原始 boot_demo1适用于我、我必须更改"boot_demo_ccs.cmd"并具有以下内容:
#define APP_BASE 0x00004000
闪存(RX):origin = app_BASE,length = 0x000fc000
而不是以下行:
#define APP_BASE 0x00000000
闪存(RX):origin = APP_BASE,length = 0x00100000
但是、通过使用前两行、UART 中断处理程序和 LED 闪烁不起作用- LED 不闪烁、UART 命令不被处理。
通过使用后两行、它们都可以正常工作、但由 UART 命令"boot"触发的引导加载程序代码不起作用(对"JumpToBootLoader"函数的调用)、并且我无法在该命令后上载 bin。
请参阅下面的 UART 中断处理程序函数-使 UART 侦听器和引导加载工作的正确方法是什么?
----
空 UARTIntHandler (空)
{
uint32_t ui32Status;
ui32Status = ROM_UARTIntStatus (UART0_BASE、TRUE);
ROM_UARTIntClear (UART0_BASE、ui32Status);
字符 b[5];
int i = 0;
while (ROM_UARTCharsAvail (UART0_BASE))
{
B[i]= ROM_UARTCharGetNonBlocking (UART0_BASE);
i++;
}
if (strstr (b、"boot"))
{
CHAR*响应="确定";
UARTSend (响应、strlen (响应));
JumpToBootLoader();
}
否则(strstr (b、"blinkon"))
{
shouldBlink = true;
CHAR*响应="确定";
UARTSend (响应、strlen (响应));
}
否则(strstr (b、"blinkoff")
{
shouldBlink = false;
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0);
CHAR*响应="确定";
UARTSend (响应、strlen (响应));
}
其他
{
CHAR*响应="确定";
UARTSend (响应、strlen (响应));
}
}
----