为什么选这个板子,因为我就这个高性能.哈哈.
新建Keil工程把我所列的组件都选上.
首先我们用的FULL SPEED模式.
修改USB_Config_0.c配置,这里名字记得改,他识别名字和VID PID.一定要带CMSIS-DAP字的.
再把具体USB_Config_HID_0.h修改.
我们这次是FullSpeed,先试试延迟16ms的版本.(默认值),接着把堆栈改大.
修改操作系统的参数.
在组右键通过模板增加一个文件,测试一下配置.
因为是HSI,注意修改一下main中的配置.
这时候编译应该就不会出什么错误.
设置一下让他ST-Link下载.
进入调试查看时钟对不对.时钟配置后下断点观察.
找到CMSIS-DAP源码.我的地址是[C:Keil_v5ARMPACKARMCMSIS5.0.1CMSISDAPFirmware]
把配置文件搞过来.
同样如此.
然后搞这两个过来,Main不要覆盖.
把源码挪过来.
里面这个文件不要.
把刚才添加的一些东西加到Keil里面.
在main.c中增加include.
#include "osObjects.h" #include "rl_usb.h" #include "DAP_config.h" #include "DAP.h"
RTOS调度相关函数删掉.添加我们的DAP数据.
DAP_Setup(); // DAP Setup Delayms(100U); // Wait for 100ms USBD_Initialize(0U); // USB Device Initialization USBD_Connect(0U); // USB Device Connect while (!USBD_Configured(0U)); // Wait for USB Device to configure
把这个文件的只读去掉.(在资源管理器)
然后把device.h改成stm32f7xx.h
CPU_CLOCK填真实系统时钟.
暂时不要SWO功能.
添加INCLUDE,自身项目目录和RTE目录.
这时候编译,应该会出错的.通过错误快速引导到需配置的地方.
一般情况已经可以了,如果还不可以,请加装HSE晶振.
但是这个时候不能仿真啊,不能不能啊.因为我们PIN脚都还没定义呢.由于硬件限制和偷懒,先只实现一个SWD吧,另外SWD有双向引脚,正常来说呢,不应该一个IO搞定的.但是速度无所谓党表示算了.把函数按照最后的改装表改装,如果SWDIO是不是很难控制?外部电路当然容易,当然也可以采用不断切换输入输出模式.就像我这样,但是缺点是最慢速度才能满足他检测所需时间了.
全部IO改好后,调到最低速度,连接了一个STM32F103,检测成功,仿真肯定也是可以的,只是慢得...
具体每个函数解释如下.
未来设想,做个带屏幕的调试器?
[…] 具体JTAG技术细节可以参考我之前文章.JTAG实现?我们关心PI3/PI2应该接在什么地方(文件统一是PI2) […]