1. 将CMSIS USB Stack协议栈相关文件放到kl25_sc_rev10\klxx-sc-baremetal\src\projects\platinum文件夹下,如下图: 2. 打开platinum例程的IAR工程,并将CMSIS USB Stack->src和CMSIS USB Stack->Porting use两个文件夹下的文件添加到IAR工程管理目录下,如下图,并在IAR的General Options->C/C++ Complier->Preprocesser选项中添加CMSIS USB Stack->inc的头文件搜索路径,从下图可以看到USB Device CDC类相关的文件只有7个,比较清晰简洁: 3. 打开main.c文件,将如下图的相关代码全部copy并覆盖掉原代码,如下图所示: 4. 此外,针对该工程还需要修改两个部分,一是需要配置时钟部分PLL锁相环的倍频系数,使其倍到96M(因为USB的时钟源为MCGPLL/2=48),即修改freedom.h中PLL0_VDIV参数为48,然后由于PLL输出96M,其Coreclock和busclock的配置需要保证SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(1) | SIM_CLKDIV1_OUTDIV4(1);即Coreclock=48MHz,Busclock=24M。二是将USB的中断服务函数加载到中断向量表里面,即打开isr.h,配置如下: 5. 按照以上步骤修改完毕,重新编译并下载到KL25,将FRDM-KL25的另个USB口插到电脑即会弹出安装驱动的提示,由于程序中我将设备描述符中的VID和PID改成了官方USB Stack 4.1.1的配置,所以安装驱动时直接选择其目录下的inf文件即可(该**最后我附上的代码中也带了该驱动文件),安装完后即可枚举成Virtual Com Port的虚拟串口设备,如下图。然后打开串口调试助手,输入任意连续的字符串并点击发送(端口我配置了最大包的size是32bytes,但是协议中自带拆包打包等功能,不需要用户关心),可以接收返回同样的数据,如下图所示。
|