找回密码
 立即注册
楼主: LAOXU

荣誉版主,老许版:8H系列/8G系列, MDU16 V3.0 LIB 库使用说明

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-10-1 10:10:32 | 显示全部楼层
corey*** 发表于 2024-8-17 22:17
大神好,我是新手,在我的项目中引入MUD16的V1和V2版本,Keil编译都能通过,但是用V3,就会出现*** ERROR L ...

调试时 加了 /*  */ , 请将  FCASTL.a51 文件中的 ' /* ' 和 ' */ '去掉即可.

无标题1.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-04 20:30:34
已绑定手机

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-11-9 10:08:14 | 显示全部楼层
大神你好,使用了库函数,非常感谢,我用的时8H4K64TL,在左移和右移函数存在卡死的问题。问题发生在以下函数中
//整数平方根算法
uint16_t IntSqrt(uint32_t x)
{

   uint32_t temp = 0;
   uint16_t v_bit = 15;
   uint16_t n = 0;
   uint16_t b = 0x8000;

   if (x <= 1)
       return x;

   do{
       temp = ((uint32_t)((n << 1) + b)) << (v_bit--);
       //temp = ((uint32_t)((n << 1) + b));
       //temp <<= (v_bit--);
       if (x >= temp)
       {
           n += b;
           x -= temp;
       }
   }while (b >>= 1);
   
   return n;
}

会卡死在<<= (v_bit--);这个语句中!
另外while (b >>= 1);这句语句平时没有问题,但是当b==0时,也会卡死

另外,官方的那个库也存在一样的问题

您有空研究一下!谢谢!

点评

请问有具体的输入数值吗? uint32_t x 实际值, 使于跟踪分析.  详情 回复 发表于 2024-11-9 14:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-9 14:06:12 | 显示全部楼层
收到
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-9 14:09:17 | 显示全部楼层
clbr*** 发表于 2024-11-9 10:08
大神你好,使用了库函数,非常感谢,我用的时8H4K64TL,在左移和右移函数存在卡死的问题。问题发生在以下函 ...

请问有具体的输入数值吗?

uint32_t x 实际值, 使于跟踪分析.

点评

如开关总中断EA,故障消失,那在编译我的MDU16库时,CLOSE_EA选择1,重新编译再外挂到项目中即可。  详情 回复 发表于 2024-11-13 13:01
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-04 20:30:34
已绑定手机

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-11-9 20:33:07 | 显示全部楼层
LAO*** 发表于 2024-11-9 14:09
请问有具体的输入数值吗?

uint32_t x 实际值, 使于跟踪分析.

应该是任意数都不行吧!我实验中用100不行!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-13 04:29:54 | 显示全部楼层
本帖最后由 LAOXU 于 2024-11-13 05:14 编辑

手头没有8H4K64TL芯片,用的是STC8H4K64U开发板,无论外挂哪种库,更换了好多输入数据(包括100),都未发现卡死现像。
因为我是单纯测试单一功能,不存在内存冲突问题。
请确认你是否使用OS,或中断及程序中多处使用开平方子程序?
如想确认,很简单,在调用开平方子程序之前后,临时加一个开/关总中断EA,如故障消失,肯定是特殊寄存器冲突引起的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-13 04:35:06 | 显示全部楼层
本帖最后由 LAOXU 于 2024-11-13 05:20 编辑

这里给一个以前写的开平方子程序,精度比你的高1bit(带4舍5入功能),供参考


IMG_20241113_043134_edit_57394697784822.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-13 13:01:10 | 显示全部楼层
LAO*** 发表于 2024-11-9 14:09
请问有具体的输入数值吗?

uint32_t x 实际值, 使于跟踪分析.

如开关总中断EA,故障消失,那在编译我的MDU16库时,CLOSE_EA选择1,重新编译再外挂到项目中即可。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-13 13:03:11 | 显示全部楼层
IMG_20241113_130010.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-04-29 13:02:20
已绑定手机

0

主题

130

回帖

174

积分

注册会员

积分
174
发表于 2024-11-13 15:26:44 来自手机 | 显示全部楼层
学习
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:34 , Processed in 0.157568 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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