C251的USB和REMOVEUNUSED真是鱼与熊掌
本帖最后由 大明狐 于 2024-7-15 13:09 编辑自从上周发现用C251编译带USB的LIB库文件的程序的时候
(只要包含HID或者CDC的LIB的)
如果Misc control设置的是“REMOVEUNUSED”
遇到除以8除以4之类除法运算的语句时
会莫名其妙多出一些复位指令
造成单片机重启
使用移位的方法代替除号运算,可以解决这个问题
然后今天又发现取负数的语句也会产生重启指令
num是float型,这下不知道该怎么改了
{:5_337:}
=====================================
只要不用LIB库文件,或者去掉“REMOVEUNUSED”
这些情况就不会发生
鱼与熊掌不可兼得,
现在只能要么暂时放弃USB自动下载,还是用手动连接HID;
要么暂时放弃“REMOVEUNUSED”,尽量控制程序大小。
不过反正8051的内存也够折腾,暂时选后者{:5_316:}
你这是踩了一个又一个坑啊 你别加LIB,加入C源码, 试试?
各大实验箱都有源码,不满意的地方还可以自己改 tzz1983 发表于 2024-7-15 14:23
你别加LIB,加入C源码, 试试?
各大实验箱都有源码,不满意的地方还可以自己改 ...
上个贴子里最后就用了不用LIB的那种。
但是资源下载立的USB库里只有LIB的。 要是能开源就好了,不用那么麻烦 本帖最后由 tzz1983 于 2024-7-15 16:36 编辑
大明狐 发表于 2024-7-15 15:20
上个贴子里最后就用了不用LIB的那种。
但是资源下载立的USB库里只有LIB的。 ...
有开源代码的,
这个是以源码形式呈现的: https://www.stcai.com/syx
读懂以后,可能需要自己稍加修饰,
我没有用过HID调试, 但是我知道,
如果把USB-CDC的源码改为PC与MCU之间的通信是很容易的,
就是MCU收到USB数据后, 不需要真的从UARTx发出, 就是直接利用(截胡{:lol:})
库函数就是lib,试试直接操作寄存器
还有这个问题也要注意一下:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=6287
tzz1983 发表于 2024-7-15 16:23
有开源代码的,
上个贴子里最后用的就是这个,还是很早之前用过的,一直都很正常。
最近在试用LIB的方式,才发现的 会和C251Keil闹别扭的问题。
难不成还是生成库的时候控制操作 和 REMOVEUNUSED 之间还有不一致的地方?如果有库的源码,那大家多试试就能判断出来了, 可惜STC的库不开源;
实际上,反过来想,上面使用 69-HID... 例程 在C251相同设置下编译,如果不产生 楼主遇到的 异常编译 的问题,也已经说明问题所在了吧? 楼主你觉得呢 机灵小老鼠 发表于 2024-7-15 23:11
难不成还是生成库的时候控制操作 和 REMOVEUNUSED 之间还有不一致的地方?如果有库的源码,那大家多试试就 ...
就是这个意思啊,所以记录一下,以后好避坑
页:
[1]
2