要搞DAPLink,咱肯定得从最难最基础的开始,先挑战一下RT1021开发吧(LPC55S69全是现成的,没啥意思)
与传统不同的是,这次主要使用keil的RTE环境开发,每次软件相关的文章结束,我都会在文末附上工程以及pack环境,有兴趣的可以跟着来一起研究。
开坑篇说要全程分享,那就一步一步来进行操作,首先第一步就是新建工程了。
打开keil,新建工程
起一个自己喜欢的名字
根据自己使用的芯片进行选择,这里我用的是100脚的RT1021
这时候会出现一个弹窗,不要关闭,选择图中所示的两个组件,然后点击Resolve,自动消除警告
这些警告需要配置工程才可以消除,主要是c语言版本的问题,要c99以上的,点击OK退出界面
创建User文件夹,用于存放自己的代码
新建main.c文件
回到工程,把main.c加入工程中
从官方代码库中复制下图两个文件,分别是调试初始化文件,用于进入仿真的,分散加载文件,用于指定各个代码段位置的
打开工程,对工程进行简单的配置,主要是下面三部分
SKIP_SYSCLK_INIT, XIP_EXTERNAL_FLASH=1, XIP_BOOT_HEADER_ENABLE=1, XIP_BOOT_HEADER_DCD_ENABLE=1
打开MCUXpresso Config Tools,创建一个新的工程
根据自己使用的芯片进行选择
这里根据自己需要选择
时钟界面没啥好讲的,根据自己需要发挥吧,这里我只是把主频设置到500MHz,别的没改动
设置为输出
保存工程,要把工程跟keil工程放在一起,这样两边就能形成联动
点击生成代码
回到keil中,这个弹窗全部点yes
编辑main.c文件,超级简单的代码
#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "peripherals.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
void delay(void)
{
volatile uint32_t i = 0;
for (i = 0; i < 8000000; ++i)
{
__NOP(); /* delay */
}
}
int main(void)
{
BOARD_InitPeripherals();
BOARD_InitBootPins();
BOARD_InitBootClocks();
while (1)
{
GPIO_PinWrite(BOARD_INITPINS_LED_GPIO, BOARD_INITPINS_LED_GPIO_PIN, 1U);
delay();
GPIO_PinWrite(BOARD_INITPINS_LED_GPIO, BOARD_INITPINS_LED_GPIO_PIN, 0U);
delay();
}
}
整体工程结构,里面绿色的都是keil生成的,其中不带钥匙的文件都是可以编辑的,Board Support里面的文件是由MCUXpresso Config Tools控制的
编译无误
下载到板子里面,完美运行
代码工程
2.az158_dapLink.zip (63.75 KB,点击下方附件下载)
当前环境