[求助] 怎么给kl25z建立一个usb_device 的keil工程

liwenz   2016-6-12 00:03 楼主
悬赏 10 分 芯积分未解决
我在学用kl25z , 看例子工程都还不错,编译连接,调试都可以。 其中有个工具 make_new_project-sc_Keil, 也就是建立工程模板,感觉不错。 但我特想学习usb device 程序, 源代码也有,但我不知道怎么建立工程。 我用模板工具建立了一个usb_device ,然后添加 usb_main.c 到工程里, 当然还要添加其他的文件。 为了能编译, 我把很多相关其他文件都注释掉,可以编译成功。 然后我就取消如下2行的注释,可就不行了。当然我也添加include 路径。 #include "usb_cdc.h" #include "usb_reg.h" 错误信息如下。 如果我把其他文件都加上,错误信息更多, 为了简化问题,我只是加这2行. compiling usb_main.c... ..\..\..\src\cpu\arm_cm0.h(19): error: #147-D: declaration is incompatible with "void NVIC_EnableIRQ(IRQn_Type)" (declared at line 626 of "C:\Keil\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include\core_cm0plus.h") void enable_irq (int); ..\..\..\src\cpu\arm_cm0.h(20): error: #147-D: declaration is incompatible with "void NVIC_DisableIRQ(IRQn_Type)" (declared at line 638 of "C:\Keil\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include\core_cm0plus.h") void disable_irq (int); kl25_sc_rev10 样例库,有cw ,iar ,keil 的工程文件, 我只会用keil , 其实如果用 iar 就有现成的usb_device. 不知道为什么keil 和 cw 没有这个工程目录, src 都是公用的。 如果你不能得到 kl25_sc_rev10 , 可以qq 联系我: 635477196 理文 本帖最后由 liwenz 于 2016-6-12 09:31 编辑

回复评论 (6)

我把工程附件上来,其中usb_device 是我构造的工程,有问题的工程。
不过我想到一个办法,因为他有twr-KL25Demo,这个里面好像有usb 的功能,我做减法,去掉一些不用的功能,就是我的结果了。
因为控制zip 的大小,去掉了建造工程的exe 文件。
点赞  2016-6-12 23:21
我找到一个iar 的版本, 下了一个iar 可以编译链接。 但我用iar 怎么会没驱动。
我用keil 驱动是没问题的。
点赞  2016-6-15 23:59
今天把iar 的工程编译结果下到kl25z 里了, 因为我安装好了IAR的驱动了。
debug download 到kl25z 里, 安装驱动程序,为com7 , 用flashmagic 测试。
打入就回馈了,看上去程序运行正常。
点赞  2016-6-18 17:06
下面这2个链接 告诉你怎么移植,我估计那个iar 工程就是那里下的。这2个链接基本一致
http://www.61ic.com/Technology/embed/201505/52920.html
http://comm.chinaaet.com/adi/blogdetail/39877.html

从下面链接学习怎么安装iar的驱动
http://jingyan.eeboard.com/article/70099
点赞  2016-6-18 17:10
我下载编译下载都很好。
按照链接的方法,做了一遍,却有点问题。
出现如下错误:
Error[Li005]: no definition for "USBD_ReqGetStatus" [referenced from D:\kl25z\
kl25_sc_rev10\klxx-sc-baremetal\build\iar\platinum\FLASH_128KB\Obj\usbd_core.o]

我就检查 usbd_core.c
inline BOOL USBD_ReqGetStatus (void) {
这不是明明为inline 函数吗 ?  怎么会 no definition
我就编译链接不了。

我把isr.h中
#undef  VECTOR_040
#define VECTOR_040 USB0_IRQHandler

extern void USB0_IRQHandler(void);
这3行注释掉,编译链接下载都可以了,运行结果不对了。
因为本来要设置usb 中断的,却没有。
点赞  2016-6-19 11:02
谢lz分享
点赞  2016-8-8 08:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复