[XMC™] 内置MATH协处理器的使用例程方法,缩短代码执行时间分享

[复制链接]
997|13
 楼主| Burnon_FAE_1 发表于 2023-12-28 17:22 | 显示全部楼层 |阅读模式
一、除法协处理器使用方式
void MATH_Init()
{
    SCU_GENERAL->PASSWD = 0xC0U;
    SCU_CLK->CGATCLR0 |= 0x100;     //MATH
    SCU_GENERAL->PASSWD = 0xC3U;
   //MATH->DIVCON |= 0x02;           // Signed division is selected
   MATH->DIVCON |= 0x06;             // Unsigned division is selected
}

uint32_t MDU_Divider(uint32_t Dividend,uint32_t Divisor)
{
    MATH->DVD=Dividend;
    MATH->DVS=Divisor;
    MATH->DIVCON |=0x05;   //start
    while(MATH->DIVST & 0x01){}
    return((uint32_t)MATH->QUOT);
}

1、在main函数中调用 MATH_Init();
2、调用uint32_t MDU_Divider(uint32_t Dividend,uint32_t Divisor)进行除法运算
    如:temp = data1 / data2;
          temp = MDU_Divider(data1 ,data2);

二、代码在RAM中运行
    在函数中增加  __attribute__((section (".ram_code")))  声明
    如果:bool  PwmModeCtrl(uint16_t vbat, uint16_t ibat, uint16_t duty, uint16_t Lf)
    定义函数在RAM中运行:bool __attribute__((section (".ram_code"))) PwmModeCtrl(uint16_t vbat, uint16_t ibat, uint16_t duty, uint16_t Lf)

三、可适当提高代码优化等级
    提高代码优化等级,可以缩短代码执行时间。
yangxiaor520 发表于 2023-12-29 08:05 来自手机 | 显示全部楼层
只能进行除法运算嘛?
w2nme1ai7 发表于 2023-12-29 17:14 | 显示全部楼层
这种是不是属于硬件支持的math功能啊?
suw12q 发表于 2023-12-29 18:19 | 显示全部楼层
看着还不错啊,不过除法其实可以按照移位的方式实现
p0gon9y 发表于 2023-12-29 19:21 | 显示全部楼层
缩短代码运行时间确实很有意义的
lamanius 发表于 2023-12-29 20:25 | 显示全部楼层
楼主这是直接优化等级了,这样会不会容易出现程序跑飞的情况
b5z1giu 发表于 2023-12-29 21:30 | 显示全部楼层
优化等级不建议配置,这个容易让代码运行不稳定
ex7s4 发表于 2023-12-29 22:37 | 显示全部楼层
都是寄存器操作啊,感觉很麻烦啊
t1ngus4 发表于 2023-12-30 07:08 | 显示全部楼层
挺好,不过除法用得少,基本都是加法的运算
q1d0mnx 发表于 2023-12-30 08:22 | 显示全部楼层
这种除法运算一般运用在哪儿啊?
l1uyn9b 发表于 2023-12-30 09:11 | 显示全部楼层
其实正常运行来说,执行时间也是可以接受的
liu96jp 发表于 2023-12-30 12:35 | 显示全部楼层
你这优化完成之后,执行时间能缩小多少?

zwsam 发表于 2024-1-8 13:02 | 显示全部楼层
IFXNaZhang 发表于 2024-1-16 16:08 | 显示全部楼层
XMC1300和1400系列的MATH 协处理包含了一个32 位的DIVIDER 和一个24 位的CORDIC。DIVIDER 单元实现
32bit 有符号/无符号除法, CORDIC 单元实现24bit 三角函数运算。属于硬件支持的。
下图为利用除法器运算和一般的C 库运算的比较表,可以看到利用除法器运算的除法操作会
比C 库软件运算最多快7 倍(在IAR 环境下)。(这个图表时间比较久了,可以参考下)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

82

主题

132

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部