找回密码
 立即注册
查看: 5235|回复: 43

世上(也是史上)功能最全的STC32 MDU32应用 LIB

[复制链接]
  • TA的每日心情
    开心
    昨天 01:53
  • 签到天数: 122 天

    [LV.7]常住居民III

    36

    主题

    826

    回帖

    3843

    积分

    荣誉版主

    积分
    3843
    发表于 2023-2-3 07:01:58 | 显示全部楼层 |阅读模式

    原先想动手搞一个世上(也是史上)功能最全的STC32 数学函数库, STC官方目前提供的芯片, 没有 FPMU单元, 只有 MDU单元,

    且功能简单单调, 只能做单一的 long 乘除法, 功能扩展性差(相比之下, MDU16单元做的挺不错的, 仅少了一个算术左移), 实在没啥玩头,

    这一计划只能延迟, 期待 STC官方后续有 FPMU单元的芯片出来.



    言归正传, 现在基础算法上有了重大突破, 使用 MDU32单元, 改写原 C251的浮点数除法, 使得运算速度大幅度提升, 请看测试结果.

    未命名.JPG

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 01:53
  • 签到天数: 122 天

    [LV.7]常住居民III

    36

    主题

    826

    回帖

    3843

    积分

    荣誉版主

    积分
    3843
     楼主| 发表于 2023-2-3 07:09:41 | 显示全部楼层
    现在降级, 先搞个世上(也是史上)功能最全的STC32G MDU32应用 LIB 玩玩, 优化的 C251编译器 内部函数, 特别是浮点数除法,

    具体STC32G MDU32库, 等我整理一下, 再上传

    所有库文件全部公开开源, 用户可自行修改增减成自已的专用库使用.
  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 144 天

    [LV.7]常住居民III

    17

    主题

    364

    回帖

    1237

    积分

    荣誉版主

    积分
    1237
    发表于 2023-2-3 08:20:31 | 显示全部楼层
    墙裂支持
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 15:31
  • 签到天数: 88 天

    [LV.6]常住居民II

    68

    主题

    546

    回帖

    1802

    积分

    超级版主

    积分
    1802
    QQ
    发表于 2023-2-3 10:32:54 | 显示全部楼层
    我仍然觉得是是宇宙上 功能最全的STC32 MDU32应用 LIB
    热线19952583534
    www.STCAI.com
  • TA的每日心情
    开心
    昨天 01:53
  • 签到天数: 122 天

    [LV.7]常住居民III

    36

    主题

    826

    回帖

    3843

    积分

    荣誉版主

    积分
    3843
     楼主| 发表于 2023-2-3 10:50:13 | 显示全部楼层
    想把 64位 整数运算 也加进去~~~
  • TA的每日心情
    奋斗
    2024-2-19 10:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    8

    回帖

    151

    积分

    注册会员

    积分
    151
    发表于 2023-2-3 14:36:16 | 显示全部楼层
    墙裂支持
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 01:53
  • 签到天数: 122 天

    [LV.7]常住居民III

    36

    主题

    826

    回帖

    3843

    积分

    荣誉版主

    积分
    3843
     楼主| 发表于 2023-2-3 19:28:11 | 显示全部楼层
    STC32G 专用 MDU32 库预告:

    1. 浮点加减乘除法

    2. 64位长整数加减乘除法

    3. ABS求绝对值.

    说明:
    1. 编写了浮点数加减乘除法, 其中浮点数除法为快速除法, 由于浮点数加减乘除法, 调用内部公共(判断溢出,处理0,规格化等)子程序,

    如仅加入 C251浮点数快速除法, 没法调用C251内部公共子程序, 使得编译后程序代码变长, 故这次浮点数加减乘除法全部加入.

    2. C251不支持 64位长整数加减乘除法, 加入后扩大了C251的应用范围.

    3. 关于 ABS求绝对值. 上次看 STC32 官方FPMU库, 发现 8位整数转浮点数, 16位整数转浮点数, 32位整数转浮点数, 存在错误.

    顺便看了一下 Keil C251自带的 ABS函数, 发现其执行代码, 可作进一步优化, 这次将其优化后加入.

    包含 ABS, CABS, LABS, FABS 函数
  • TA的每日心情
    开心
    昨天 01:53
  • 签到天数: 122 天

    [LV.7]常住居民III

    36

    主题

    826

    回帖

    3843

    积分

    荣誉版主

    积分
    3843
     楼主| 发表于 2023-2-4 20:00:43 | 显示全部楼层
    最后将MDU32所含有的 32位定点整数乘除法 也加入了, 库函数清单如下:


    未命名1.JPG

    该用户从未签到

    546

    主题

    9104

    回帖

    1万

    积分

    管理员

    积分
    14082
    发表于 2023-2-4 20:11:28 | 显示全部楼层
    强烈支持,请广大爱好者,帮忙测试,帮忙推荐:)
  • TA的每日心情
    开心
    昨天 01:53
  • 签到天数: 122 天

    [LV.7]常住居民III

    36

    主题

    826

    回帖

    3843

    积分

    荣誉版主

    积分
    3843
     楼主| 发表于 2023-2-4 20:20:28 | 显示全部楼层
    STC32G_MDU32 标准数学函数库, 含以下库文件.

    1. 浮点加减乘除法

    2. 32位整数乘除法(快速)

    2. 64位长整数加减乘除法

    3. ABS求绝对值.

    说明:
    一. 编写了浮点数加减乘除法, 其中浮点数除法为快速除法, 由于浮点数加减乘除法, 调用内部公共(判断溢出,处理0,规格化等)子程序,

    如仅加入 C251浮点数快速除法, 没法调用C251内部公共子程序, 使得编译后程序代码变长, 故这次浮点数加减乘除法全部加入.

    二. MDU32 所带的 32位整数乘除法(快速)

    三. C251不支持 64位长整数类型, 加入64位长整数加减乘除法运算函数库, 扩大了C251的应用范围.

    如需使用 64位长整数加减乘除法, 请在程序开头, 插入头文件 LONG64.h , 其他程序都是内部标准函数, 无需插入头文件.

    附带 64位长整数加减乘除法 测试程序, 请单步运行, 观察程序运行后的数学运算结果.

    四. 关于 ABS求绝对值. 上次看 STC32 官方FPMU库, 发现 8位整数转浮点数, 16位整数转浮点数, 32位整数转浮点数, 存在错误.

    顺便看了一下 Keil C251自带的 ABS函数, 发现其执行代码, 可作进一步优化, 这次将其优化后加入.

    包含 ABS, CABS, LABS, FABS 函数

    五. 官方库有点多, Large 模式和 Huge 模式 分开 两个库, 没必要, Keil 官方库, 这两种 模式, 都是合并成一个库的, 方便使用.

    而让 Keil 官方分开的库, 是根据 Memory 储存模式不同, 分别 封装 不同的库, 其最主要的区别, 是 2字节指针 和 4字节指针.

    2字节指针, 是为了兼容 51程序, 直接在 251上运行, 一般使用 Binary模式运行, 早期的芯片容量不大, 为节约内存而使用.

    现在已完全没必要了.

    STC32 采用 Source模式运行, 且芯片容量又大, 如 Memory 储存模式选择 Tiny模式, 大一点的程序就编译通不过了,

    就算通过了, 且怀疑运行是否正常? 工作是否可靠? (官方手册强调 STC32G 是 4字节指针), 当用 2字节指针, 去访问

    CODE 中的常数, 会产生什么结果? (我没测试过, 但大概率是不会有好结果的).

    因此, STC32 专用库只需要编写 支持4字节数据指针即可, 这样, 完全可以只用一个库, C251 编译器 自动识别 Large 和 Huge 模式,

    很容易的解决库程序兼容问题.

    六. 官方库编译时会产生大量警告及无用代码, 把库按照正规标准格式书写后编译, 这些警告及无用代码, 都将不会存在了.


    STC32G_LIB.rar (202.47 KB, 下载次数: 127)

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-19 12:30 , Processed in 0.071428 second(s), 70 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表